Zend_Navigation的自定义渲染

And*_*ird 8 php zend-framework zend-navigation

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

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

$this->navigation()->menu()->renderMenu(null,array('maxDepth'   =>  0));
Run Code Online (Sandbox Code Playgroud)

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

$this->navigation()->menu()->renderSubMenu();
Run Code Online (Sandbox Code Playgroud)

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

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

typ*_*ror 11

看看我的这个答案:让Zend_Navigation菜单与jQuery的Fisheye一起使用

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


And*_*ird 7

Typeoneerror让我走上正轨,这是我最终使用的代码:

在layout.phtml中:

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

在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();
            }
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

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