在Zend Framework 2中,我使用ZendNavigation作为主导航和面包屑导航。我希望面包屑导航显示在每一页上,但我不希望每一页都显示在主导航中。
换句话说,我希望一些页面在breadcrumb导航中只显示ONLY。
有什么办法做到这一点吗?也许是一个可以在导航阵列中设置的选项?还是我需要创建两个不同的导航,并将一个用作主导航,另一个用作面包屑?
编辑
复制"pages"配置实际上没有意义,因为您可以指示视图助手呈现您需要的内容。因此,您可以使用相同的导航容器来呈现不同的菜单(例如,breadcrumb与主导航)。
您可以使用提供的breadcrumb方法(如setMaxDepth()
或setMinDepth()
)来完成此操作。或者,为了获得更大的灵活性,请使用我在下面解释的部分视图。
在每种情况下,您都只是将整个容器向下过滤到要渲染的选项中。
可以使用局部视图来渲染面包屑。
此方法将查找最深的活动页面,并将指向活动页面的页面数组传递给部分视图脚本。
所附链接中的示例使用array_map
来呈现$this->pages
的内容,但是使用循环可以获得相同的结果。
foreach($this->pages as $page) {
printf('<a href="%s">%s</a>', $page->getHref(), $page->getLabel());
}
但是请记住,如果您使用ACL,您现在需要手动检查当前用户的页面可访问性-这可以使用MVC或URL页面的方法来完成