ZF2 - 使用导航视图助手多个导航菜单(ZF2 - multiple nav menus usi

2019-08-01 16:52发布

我想结合使用主导航有更具体的导航子菜单。

在我的布局 ,我打电话这样的视图助手:

$this->navigation('main_navigation')->menu()

在我看来 ,我打电话是这样的:

$this->navigation('sub_navigation')->menu()

问题是,每当我打电话navigation()视图助手一次更 ,它只是输出在这两个地方的第二个 。 换句话说,它的打印两种主要的资产净值 subnav菜单中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视图助手,以便它将打印正确的菜单为每个呼叫?

Answer 1:

menubreadcrumbssitemaplinks助手被注册为插件。 如果调用$this->navigation('main_navigation')的第一次, Zend\View\Helper\Navigation创建容器“main_navigation”。 如果您然后调用menu() 首次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'); ?>

我已经提交了有关问题,它和错误会被修正。



文章来源: ZF2 - multiple nav menus using the navigation view helper