我正在尝试将主导航与子菜单结合使用以进行更具体的导航。
在我的布局中,我正在调用视图助手:
$this->navigation('main_navigation')->menu()
并在我的视图中我这样称呼它:
$this->navigation('sub_navigation')->menu()
问题在于,每当我向navigation()
视图帮助者多次 调用 时,它只会输出第二个在这两个地方。换句话说,它正在打印 subnav ,两个主导航和子划线菜单。
我的合并配置如下所示:
'navigation' => array(
'main' => array(
'home' => array(
'label' => 'Home',
'route' => 'myroute',
),
'somepage' => array(
'label' => 'Me',
'route' => 'somepage'
)
),
'sub' => array(
'test' => array(
'label' => 'Test',
'route' => 'myroute',
'action' => 'test'
),
'other-test' => array(
'label' => 'Other Test',
'route' => 'myroute',
'action' => 'other-test'
)
)
)
如何使用navigation
视图帮助程序,以便为每次调用打印正确的菜单?
答案 0 :(得分:11)
menu
,breadcrumbs
,sitemap
和links
助手已注册为插件。如果您是第一次致电$this->navigation('main_navigation')
,Zend\View\Helper\Navigation
会创建容器“main_navigation”。如果您第一次致电menu()
,则会创建{strong>并直接 Zend\View\Helper\Navigation\Menu
对象。
这表明存在缺陷:如果现在调用$this->navigation('sub_navigation')
,导航容器将加载到navigation()
视图助手中。然后,当您调用menu()
时,已创建菜单视图助手。所以新容器不再注入了。
显然,这是代码库中的一个错误。有一个快速修复:菜单助手也可以接受容器字符串:
<?php echo $this->navigation()->menu('main_navigation'); ?>
<?php echo $this->navigation()->menu('sub_navigation'); ?>
我已经提交了一个关于它的问题,错误将被修复。