2009-12-28 2 views
8

내 Zend Framework MVC 응용 프로그램과 함께 탐색 XML 파일을 사용하고 있습니다.Zend_Navigation의 사용자 정의 렌더링

최상위 메뉴가 레이아웃 상단에 렌더링됩니다. 코드는 다음과 같습니다 생산하기 :

$this->navigation()->menu()->renderMenu(null,array('maxDepth' => 0)); 

이 자동으로 내 상단 메뉴로 스타일 한 링크의 정렬되지 않은 목록을 렌더링합니다. 이제 모든 기본 제공 Zend_Navigation (MVC 및 ACL 통합)을 사용하지만 사용자 정의 마크 업을 사용하여 하위 메뉴 (활성 컨테이너 트리를 렌더링)를 렌더링하려고합니다. 이것을 삽입하면됩니다 :

$this->navigation()->menu()->renderSubMenu(); 

사실, 이것을 렌더링하기 위해 필요한 마크 업 세트가 있습니다. 그렇게 크게 달라서 원하는 프리젠 테이션을 수용하기 위해 정렬되지 않은 목록을 만들 수 있다고 생각하지 않습니다.

하위 메뉴를 사용자 정의하는 간단한 방법이 있습니까?

답변

11

체크 아웃 내이 대답 : Getting Zend_Navigation menu to work with jQuery's Fisheye

요약 된을, 당신은 페이지를 통해 탐색 및 루프 뷰를 생성하고 사용자 정의 태그를 생성하는 페이지 방법을 사용합니다. 제가 아는 한, 현재 네비게이션을위한 데코레이터와 같은 지원은 없습니다.

<?= $this->navigation()->menu()->renderMenu(null,array('maxDepth' => 0)); ?> 
<? $this->navigation()->menu()->setPartial('sidemenu.phtml'); ?> 
<?= $this->navigation()->menu()->render(); ?> 

sidemenu.phtml에서 : layout.phtml에서

:

$this->navigation()->findByResource(
    Zend_Controller_Front::getInstance()->getRequest()->module . 
    Zend_Controller_Front::getInstance()->getRequest()->controller 
); 

foreach ($this->container as $page) { 
    if ($page->isVisible() && $this->navigation()->accept($page)) { 
     if ($page->isActive()) { 
      echo $page->getLabel(); 
      $subcontainer = $page->getPages(); 
      foreach ($subcontainer as $subpage) { 
       echo $subpage->getLabel(); 
      } 
     } 
    } 
} 

7

Typeoneerror는 바른 길에 나를 넣어, 여기에 내가 사용하고 결국 코드입니다 매력처럼 다른 사람이 찾을 수있는 대답으로 남겨 둡니다.