如果父菜和子项具有相同的URI并使用Zend_Navigation,如何在菜单中呈现它们?

时间:2012-01-03 20:41:53

标签: zend-framework zend-view zend-navigation

您好我在没有找到解决方案的情况下深入研究这个问题。这看起来很简单,但我转了一会儿。

我正在尝试在菜单中突出显示父母和1个孩子。两者都有相同的uri,但只有父级才能获得活动类。

这是我的xml:

<configData>
<apps>
<agenda>
    <label>Agenda</label>
    <uri>/apps/agenda</uri>

    <pages>
        <page1>
            <label>Page 1</label>
            <uri>/apps/agenda</uri>
        </page1>
        <page2>
            <label>Page 2</label>
            <uri>/apps/agenda/page2</uri>
        </page2>
    </pages>
</agenda>
</apps>
</configData>

这里我的.phtml:

<div>
    <?php echo $this->navigation(Zend_Registry::get('Zend_NavigationApp'))->menu()
            ->renderMenu(null, array(
            'minDepth' => null,
            'maxDepth' => 1,
            'ulClass' => 'navigation',
            'onlyActiveBranch' => false));
            ?>
</div>

这里生成的html:

<div>
<ul class="navigation">

<li class="active">
    <a href="/apps/agenda">Agenda</a>
    <ul>
        <li> /*Here the expected active class*/

            <a href="/apps/agenda">Page 1</a>
        </li>
        <li>
            <a href="/apps/agenda/page2">Page 2</a>
        </li>
    </ul>
</li>

</ul>
</div>

我想要做的就是在点击父链接后获得活动类的“li”父级和“li”子级。

1 个答案:

答案 0 :(得分:2)

解决方案

使用MVC代替URI样式配置xml文件修复了我的所有问题。

这是我修复的xml:

<configData>
<apps>
<agenda>
    <label>Agenda</label>
    <module>module_1</module>
    <controller>control_1</controller>
    <action>action_1</action>
    <route>agenda_1</route>

    <pages>
        <page1>
            <label>Page 1</label>
            <module>module_1</module>
                    <controller>control_1</controller>
                    <action>action_1</action>
                    <route>agenda_1</route>
        </page1>
        <page2>
            <label>Page 2</label>
            <module>module_2</module>
                    <controller>control_2</controller>
                    <action>action_2</action>
                    <route>agenda_2</route>
        </page2>
    </pages>
</agenda>
</apps>
</configData>

请注意,我在我的ini文件中使用了路由定义。