我在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();
?>
非常感谢任何帮助!
答案 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();
?>
应解决您的问题