8

我将导航 XML 文件与我的 Zend Framework MVC 应用程序结合使用。

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

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

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

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

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

有没有一种简单的方法(或者如果需要的话很复杂;)来定制一个子菜单?

4

2 回答 2

11

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

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

于 2009-12-28T22:16:28.167 回答
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();
            }
        }
    }
 }

像魅力一样工作,将此作为其他人找到的答案。

于 2009-12-29T00:27:41.980 回答