php - ZF2 - 使用导航 View 助手的多个导航菜单

标签 php navigation zend-framework2 view-helpers

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

在我的布局中,我这样调用 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 帮助程序,以便它为每次调用打印正确的菜单?

最佳答案

menubreadcrumbssitemaplinks 助手被注册为插件。如果您第一次调用 $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/

相关文章:

PHP exec() 命令 : how to specify working directory?

javascript - Zend2 导航删除 "href"

php - 从 Zend InputFilter 检索错误消息

zend-form - 从 Controller 设置Zend\Form错误消息

php - 其他时间戳上的 ZF2 内连接

php - 如何在页面上没有提交按钮的情况下调用JS/ajax?

php - 为什么数组手册和从数据库制作的数组在strpos处理时给出不同的结果?

PHP IoC 交叉依赖

swift - Swiftui 中的汉堡导航菜单幻灯片动画

html - 这个导航可以完全用CSS完成吗