ZF2 - 在 Zend 导航菜单中处于活动状态 <li>
ZF2 - Active <li> in Zend Navigation Menu
我已经成功地使用 Zend Navigation 生成了菜单。但是,从未设置活动页面(未为任何 <li>
元素设置 active
class)。
我的部分:
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,
),
),
),
菜单在页面上正确呈现,但没有任何活动 class:
$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);
关于我的问题有什么想法或建议吗?
非常感谢,
问题出在module.config.php
; isActive
方法(来自 Zend\Navigation\Mvc
)应该是 "full" 控制器名称(包括名称空间)。
我的配置拆分了命名空间和控制器名称,这是导致问题的原因。
解决方案:
array(
'label' => 'Page 1',
'route' => 'application/default',
'controller' => 'Application\Controller\Index',
'action' => 'page1',
'icon' => 'fa fa-2x fa-file-text',
'order' => 10,
),
我已经成功地使用 Zend Navigation 生成了菜单。但是,从未设置活动页面(未为任何 <li>
元素设置 active
class)。
我的部分:
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,
),
),
),
菜单在页面上正确呈现,但没有任何活动 class:
$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);
关于我的问题有什么想法或建议吗?
非常感谢,
问题出在module.config.php
; isActive
方法(来自 Zend\Navigation\Mvc
)应该是 "full" 控制器名称(包括名称空间)。
我的配置拆分了命名空间和控制器名称,这是导致问题的原因。
解决方案:
array(
'label' => 'Page 1',
'route' => 'application/default',
'controller' => 'Application\Controller\Index',
'action' => 'page1',
'icon' => 'fa fa-2x fa-file-text',
'order' => 10,
),