Zend_Navigation的自定义渲染

时间:2009-12-28 21:14:46

标签: php zend-framework zend-navigation

我正在使用导航XML文件和我的Zend Framework MVC应用程序。

顶层菜单显示在我的布局顶部。生成它的代码如下所示:

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

这将自动呈现我已在顶部菜单中设置样式的无序链接列表。 现在,我想渲染子菜单(渲染活动容器树)利用所有内置的Zend_Navigation优点(MVC和ACL集成),但使用自定义标记。我会这样插入:

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

事实上,我有一组非常具体的标记,我需要用它来渲染它。它是如此截然不同我不认为我可以设置无序列表以适应我想要的演示文稿。

是否有一种简单的方法(或者如果需要可以复杂;)来自定义子菜单?

2 个答案:

答案 0 :(得分:11)

查看我的答案:Getting Zend_Navigation menu to work with jQuery's Fisheye

总结一下,您可以为导航创建一个视图并循环浏览页面并使用页面方法创建自定义标记。据我所知,目前没有类似装饰器的导航支持。

答案 1 :(得分: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();
            }
        }
    }
 }

像魅力一样工作,留下这个作为其他人找到的答案。