3

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

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

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

在我看来,我这样称呼它:

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

问题是,每当我不止一次navigation()调用视图助手 a时,它只会在两个地方输出第二个。换句话说,它正在打印导航导航菜单的子导航。

我的合并配置如下所示:

'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视图助手以便为每次调用打印正确的菜单?

4

1 回答 1

11

menu和助手注册breadcrumbs为插件。如果您是第一次调用,则会创建容器“main_navigation”。如果您第一次调用创建对象直接注入容器。sitemaplinks$this->navigation('main_navigation')Zend\View\Helper\Navigationmenu() 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'); ?>

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

于 2012-10-21T09:54:27.093 回答