ZF2 - 使用导航视图助手的多个导航菜单

时间:2012-10-20 01:36:55

标签: php navigation zend-framework2 view-helpers

我正在尝试将主导航与子菜单结合使用以进行更具体的导航。

在我的布局中,我正在调用视图助手:

$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视图帮助程序,以便为每次调用打印正确的菜单?

1 个答案:

答案 0 :(得分:11)

menubreadcrumbssitemaplinks助手已注册为插件。如果您是第一次致电$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'); ?>

我已经提交了一个关于它的问题,错误将被修复。