ZF2导航:如何仅在痕迹导航中显示一些页面

时间:2014-02-23 20:21:05

标签: php zend-framework navigation zend-framework2 breadcrumbs

在Zend Framework 2中,我使用ZendNavigation进行主导航和面包屑导航。我想在每个页面上显示Breadcrumb-Navigation,但我不希望每个页面都出现在主导航中。

所以换句话说,我想要一些页面在痕迹导航中显示 ONLY

有没有办法实现这个目标?也许可以在导航阵列中设置一个选项?或者我是否需要创建两个不同的导航并使用一个作为主导航,另一个作为痕迹导航?

1 个答案:

答案 0 :(得分:1)

修改

复制“页面”配置没有任何意义,因为您可以指示视图助手呈现您需要的内容。因此,您可以使用相同导航容器来呈现不同的菜单(例如,面包屑与主导航)。

您可以using the provided breadcrumb methods setMaxDepth()setMinDepth()执行此操作。或者,为了获得更大的灵活性,请使用视图部分,如下所述。

在每种情况下,您只需将整个容器过滤到要渲染的选项中。


您可以使用view partial to render the breadcrumbs

  

此方法将找到最深的活动页面,并将通向活动页面的页面数组传递给部分视图脚本。

附加链接中的示例使用array_map呈现$this->pages的内容,但是您可以通过循环获得相同的结果。

foreach($this->pages as $page) {
  printf('<a href="%s">%s</a>', $page->getHref(), $page->getLabel());
}

请注意,如果您正在使用ACL,现在需要手动检查当前用户的页面可访问性 - 可以使用methods available for MVC or URL pages

来完成