Zend \ Navigation breadcrumb找不到活动元素

时间:2012-10-16 13:43:47

标签: zend-framework2 zend-navigation

我的导航正在运行,所有链接都正常运行。使用$this->navigation($nav)->menu()渲染导航将显示无序列表,并且所有链接都在工作。

此外,活动链接也有效。活动元素具有class="active"作为属性。

渲染相同的导航,仅作为bradcrumb $this->navigation($nav)->breadcrumbs()不会渲染任何内容。这可能是由于我的导航目​​前只有一级深度,但仍然应该渲染第一级。

使用超现代die() - 调试我发现没有任何内容被渲染,因为viewHelper的findActive()找不到活动元素,因此返回一个空字符串。

有关我的错误位置的任何想法?任何见解将不胜感激。到目前为止,这是我的代码:

'navigation' => array(
    'default' => array(
        'biete' => array(
            'label' => 'Biete',
            'route' => 'biete',
        ),
        'suche' => array(
            'label' => 'Suche',
            'route' => 'suche',
        ),
        'administration' => array(
            'label' => 'Administration',
            'route' => 'admin'
        ),
        'dashboard' => array(
            'label' => 'Meine Artikel',
            'route' => 'dashboard'
        ),
        'login' => array(
            'label' => 'Anmelden',
            'route' => 'duituser/login'
        ),
        'logout' => array(
            'label' => 'Abmelden',
            'route' => 'duituser/logout'
        )
    ),
),
'service_manager' => array(
    'factories' => array(
        'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
        'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
    ),
),

视图部件位于我的layout.phtml

<?php echo $this->navigation('navigation')->menu(); ?>
<?php echo $this->navigation('navigation')->breadcrumbs(); ?>

提前再次感谢。

3 个答案:

答案 0 :(得分:2)

我玩了导航类/助手 - 当'playground'路线匹配时,似乎渲染了面包屑(在下面的例子中)。但是,通过将'active' => true添加到我的默认路由意味着它将始终由面包屑帮助器呈现。

'navigation' => array(
     'default' => array(
        'test' => array(
            'label' => 'Home',
            'route' => 'test',
            'active' => true,
            'pages' => array(
                'playground' => array(
                    'label' => 'Playground',
                    'route' => 'playground',
                ),
            ),
        ),
    ),
 ),

答案 1 :(得分:1)

除了DrBeza的回答,这里有什么帮助我。问题是,只有在我们达到第二级时才会渲染Breadcrumb-Navigation。但是你可以通过调用以下内容来改变这个设置:

$this->navigation('navigation')->breadcrumbs()->setMinDepth(0);

对我来说,这就是所需要的。正如DrBeza指出的那样,在某些情况下,这可能还不够。

答案 2 :(得分:0)

在我的情况下只对此有所帮助:

$this->navigation('navigation')->breadcrumbs()->render('navigation');

奇怪的是,只有在之前调用$ this-&gt; navigation('navigation') - &gt; menu()时才需要它,因为不会渲染面包屑。