【问题标题】:Zend_Navigation: how to manage menu items?Zend_Navigation:如何管理菜单项?
【发布时间】:2011-06-14 22:35:05
【问题描述】:

我有这样的菜单:

item1
 - item1.1
    - item 1.1.1
    - item 1.1.2
    - item 1.1.3
 - item1.2
    - item 1.2.1
    - item 1.2.2
item2
 - item2.1
 - item2.2

我设置了`setOnlyActiveBranch(true); 如果我选择 item.1.1.1 或 item.1.1 我会得到这个:

item1
 - item1.1
    - item 1.1.1
    - item 1.1.2
    - item 1.1.3

同时如果我按下 item1 我得到了这个:

item1
 - item1.1
 - item1.2

如果当前节点处于活动状态,我不想隐藏其他根节点。 那么如何以这种方式显示菜单(如果我选择item1.1。例如)?:

item1
 - item1.1
    - item 1.1.1
    - item 1.1.2
    - item 1.1.3
 - item1.2
item2

是否可以通过标准方法实现,或者我应该创建新的助手?

【问题讨论】:

    标签: php zend-framework tree zend-navigation


    【解决方案1】:

    {get|set}RenderParents() 获取/设置一个标志,指定在仅渲染容器的活动分支时是否应渲染父级。如果设置为 FALSE,则只会呈现最深的活动菜单。

    http://framework.zend.com/manual/en/zend.view.helpers.html

    【讨论】:

    • 这不是我试图解决的方法。好的。我们将 renderParents 设置为 false 并按下 item.1.1。现在我们看不到 item1 和 item2。它不正确。如果我将 setOnlyActiveBrand 设置为 false,那么我会看到整棵树 - 这也不正确。
    • 我猜唯一的方法是通过 {get|set}Partial() 自定义视图脚本。
    【解决方案2】:

    这对于导航视图帮助器的标准方法是不可能的,这是不幸的,因为这是一种常见的情况。

    但是,ZF 开发人员应该牢记一些案例问题,这可能就是它没有实施的原因。 这种情况是如果您想将非活动分支显示到第二级。

    Item 1 - active
      Item 1.1 - active
        Item 1.1.1 - active
        Item 1.1.2
      Item 1.2
    Item 2
      Item 2.1
      Item 2.2
    

    您可能还希望有其他案例,仅显示主要项目,仅显示活动分支。

    Item 1 - active
      Item 1.1 - active
        Item 1.1.1 - active
        Item 1.1.2
    Item 2
    

    我通过渲染整个菜单并用 CSS 隐藏非活动分支来解决这个问题。

    但您可能希望限制您的标记,因此您必须制作自定义渲染器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      相关资源
      最近更新 更多