【问题标题】:ZF2 Navigation: How to show some pages ONLY in breadcrumb navigationZF2 Navigation:如何仅在面包屑导航中显示某些页面
【发布时间】:2014-02-23 20:21:04
【问题描述】:

在 Zend Framework 2 中,我使用 ZendNavigation 作为主导航和面包屑导航。我希望面包屑导航显示在每个页面上,但我不希望每个页面都出现在主导航中。

换句话说,我希望某些页面在面包屑导航中显示。

有什么方法可以实现吗?也许可以在导航数组中设置一个选项?或者我是否需要创建两个不同的导航并将一个用作主导航,另一个用作面包屑?

【问题讨论】:

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


    【解决方案1】:

    编辑

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

    您可以通过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 来完成

    【讨论】:

    • 感谢您的回答,但这不完全是我的问题。我的面包屑导航正在渲染和工作。我不知道如何仅在面包屑导航中显示某些页面,而仅在主导航中显示其他页面。现在我所有的页面都显示在两个导航中。例如:我希望我的主菜单只包含页面“管理员”,没有子页面。但是在我的面包屑导航中,我需要指定所有子页面,例如“Admin -> Users”等。
    • 我希望有一个更方便的解决方案,但这可能是处理这个问题的最佳方法。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多