我正在尝试结合使用主导航和子菜单来进行更具体的导航。
在我的布局中,我这样调用 View 助手:
$this->navigation('main_navigation')->menu()
在我的 View 中,我这样调用它:
$this->navigation('sub_navigation')->menu()
问题是,每当我不止一次调用navigation()
View 助手时,它只会输出第二个一个在两个地方。换句话说,它为 主导航和子导航菜单打印子导航。
我的合并配置如下所示:
'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
View 帮助程序,以便它为每次调用打印正确的菜单?
最佳答案
menu
、breadcrumbs
、sitemap
和 links
助手被注册为插件。如果您第一次调用 $this->navigation('main_navigation')
,Zend\View\Helper\Navigation
会创建容器“main_navigation”。如果您随后调用 menu()
第一次 Zend\View\Helper\Navigation\Menu
对象被创建并直接 容器被注入(inject)。
这表明存在缺陷:如果您现在调用 $this->navigation('sub_navigation')
,导航容器将加载到 navigation()
View 助手中。当您随后调用 menu()
时,已经创建了菜单 View 助手。所以新容器不再注入(inject)。
很明显,这是代码库中的错误。有一个快速修复:菜单助手也可以接受容器字符串:
<?php echo $this->navigation()->menu('main_navigation'); ?>
<?php echo $this->navigation()->menu('sub_navigation'); ?>
我已经提交了一个关于它的问题,这个错误将被修复。
关于php - ZF2 - 使用导航 View 助手的多个导航菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984508/