Zend2导航 - 渲染1级分支头+儿童如果有效

时间:2013-06-05 12:47:30

标签: php zend-framework2 zend-navigation

我在zend2中创建了一个目前可用的菜单。完美。

- Parent 1
-- Child Page 1
-- Child Page 2
-- Child Page 3
- Parent 2
-- Child Page 1
-- Child Page 2
-- Child Page 3
- Parent 3
-- Child Page 1
-- Child Page 2
-- Child Page 3

现在我只想在父级处于活动状态时呈现子页面。 假设父2将处于活动状态,渲染菜单将如下所示:

- Parent 1
- Parent 2
-- Child Page 1
-- Child Page 2
-- Child Page 3
- Parent 3

这是我的global.php配置文件

return array(
    'navigation' => array(
        'default' => array(
            array(
                'label' => 'Parent 1',
                'controller' => 'controllerone',
                'pages' => array(
                    array(
                        'label' => 'Page1',
                        'controller' => 'controllerone',
                        'action' => 'page-one',
                    ),
                    array(
                        'label' => 'Page2',
                        'controller' => 'controllerone',
                        'action' => 'page-two',
                    ),
                    array(
                        'label' => 'Page3',
                        'controller' => 'controllerone',
                        'action' => 'page-one',
                    )
                ),
            ),
            array(
                'label' => 'Parent 2',
                'controller' => 'controllertwo',
                'pages' => array(
                    array(
                        'label' => 'Page1',
                        'controller' => 'controllertwo',
                        'action' => 'page-one',
                    ),
                    array(
                        'label' => 'Page2',
                        'controller' => 'controllertwo',
                        'action' => 'page-two',
                    ),
                    array(
                        'label' => 'Page3',
                        'controller' => 'controllertwo',
                        'action' => 'page-one',
                    )
                ),
            ),
            array(
                'label' => 'Parent 3',
                'controller' => 'controllerthree',
                'pages' => array(
                    array(
                        'label' => 'Page1',
                        'controller' => 'controllerthree',
                        'action' => 'page-one',
                    ),
                    array(
                        'label' => 'Page2',
                        'controller' => 'controllerthree',
                        'action' => 'page-two',
                    ),
                    array(
                        'label' => 'Page3',
                        'controller' => 'controllerthree',
                        'action' => 'page-one',
                    )
                ),
            ),
        )
    ),
    'service_manager' => array(
        'factories' => array(
            'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
        ),
    ),
);

这就是我在布局中渲染导航的方式

<?php
echo $this
    ->navigation('navigation')
    ->menu();
?>

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

您可以设法使用自定义视图模板并调用renderPartial()方法,甚至更好地扩展Zend\View\Helper\Navigation\Menu

对于非活动分支,您基本上必须使用选项renderMenu()呼叫父$maxDepth = 0

您可以使用大量方法来Zend\View\Helper\Navigation\AbstractHelper::findActive()

答案 1 :(得分:-1)

发布于#zftalk on irc .... 您缺少将菜单助手设置为仅呈现活动分支,文档位于: http://framework.zend.com/manual/2.2/en/modules/zend.navigation.view.helper.menu.html


<?php
echo $this
    ->navigation('navigation')
    ->setOnlyActiveBranch(true)
    ->menu();
?>

应解决您的问题