2009-12-28 182 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(); 
      } 
     } 
    } 
} 

工作像一个魅力,留下这个作为别人找到答案。