在Zend Framework 2中,我使用ZendNavigation进行主导航和面包屑导航。我想在每个页面上显示Breadcrumb-Navigation,但我不希望每个页面都出现在主导航中。
所以换句话说,我想要一些页面在痕迹导航中显示 ONLY 。
有没有办法实现这个目标?也许可以在导航阵列中设置一个选项?或者我是否需要创建两个不同的导航并使用一个作为主导航,另一个作为痕迹导航?
答案 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
来完成