ZF2 - 在Zend导航菜单中激活<li>

时间:2016-04-15 16:42:50

标签: php zend-framework2 zend-navigation

我设法使用Zend Navigation生成菜单。但是,永远不会设置活动页面(未为任何active元素设置<li>类。)

我的部分:

foreach ($pages as $page): ?>

<?php if (!$page->isVisible() || !$this->navigation()->menu()->accept($page)) continue; ?>

<li role="presentation" <?php if ($page->isActive()) echo 'class="active"' ?>>
    <a href="<?php echo $page->getHref() ?>">
        <?php if ($icon = $page->get('icon')) {
            echo '<span class="' . $icon . '"></span>';
        } ?>
        <span> <?php echo $this->translate($page->getLabel()) ?> </span>
    </a>
</li>

<?php endforeach ?>

module.config.php的摘录:

    'navigation' => array(
        'default' => array(
            array(
                'label' => 'Page 1',
                'route' => 'application/default',
                'namespace' => 'Application\Controller',
                'controller' => 'Index',
                'action' => 'page1',
                'icon' => 'fa fa-2x fa-file-text',
                'order' => 10,
            ),
            array(
                'label' => 'Page 2',
                'route' => 'application/default',
                'namespace' => 'Application\Controller',
                'controller' => 'Index',
                'action' => 'page2',
                'icon' => 'fa fa-2x fa-file-text',
                'order' => 20,
            ),
        ),
    ),

菜单在页面上正确呈现,但没有任何活动类:

    $partial = array('partial/menu.phtml', 'default');
    echo $this->navigation('navigation')
        ->menu()
        ->setMinDepth(0)
        ->setMaxDepth(0)
        ->setPartial($partial);

在对ZF代码进行一些研究之后,我发现了一些我不理解的东西(在Zend\View\Helper\Navigation\Menu.php中):

// in renderNormalMenu function, line 288     
$isActive = $page->isActive(true);

关于我的问题的任何想法或建议?

非常感谢,

1 个答案:

答案 0 :(得分:1)

问题发生在module.config.php;预计isActive方法(来自Zend\Navigation\Mvc)&#34; full&#34;控制器名称(包括命名空间)。

我的配置是拆分命名空间和控制器名称,导致问题。

解决方案:

            array(
                'label' => 'Page 1',
                'route' => 'application/default',
                'controller' => 'Application\Controller\Index',
                'action' => 'page1',
                'icon' => 'fa fa-2x fa-file-text',
                'order' => 10,
            ),