2009-12-28 181 views
8

我正在使用導航XML文件與我的Zend Framework MVC應用程序一起使用。自定義渲染的Zend_Navigation

頂級菜單顯示在我的佈局頂部。生成它的代碼如下所示:

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

這會自動呈現我已設置到頂層菜單中的鏈接的無序列表。 現在,我想渲染子菜單(呈現活動容器樹),利用所有內置的Zend_Navigation善良(MVC和ACL集成),但使用自定義標記。我會這樣做插入:

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

事實上,我有一套非常具體的標記,我需要與此呈現此。這是非常不同的我不認爲我可以設計一個無序列表來適應我想要的演示。

是否有簡單的方法(或者需要複雜的話)來定製一個子菜單?

回答

7

Typeoneerror把我在正確的軌道上,這裏是我最後使用的代碼:

在layout.phtml:

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

在sidemenu.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(); 
      } 
     } 
    } 
} 

工作像一個魅力,留下這個作爲別人找到答案。