我有以下代码:
<ul class="navigation">
<?php foreach( $this->navigation as $item ): ?>
<li class="<?php if($item->isActive()){echo " active";}?>">
<div class="shadow"></div>
<div class="tab"><?php echo $this->htmlLink($item->getHref(), $this->translate($item->getLabel())) ?></div>
</li>
<?php endforeach; ?>
</ul>
$item->isActive()
仅适用于主页。在所有其他页面上,class =“active”不会显示。
更新:
应用程序使用以下路由:
// Routes --------------------------------------------------------------------
'routes' => array(
'home' => array(
'route' => '/',
'defaults' => array(
'module' => 'core',
'controller' => 'index',
'action' => 'index'
)
),
'core_home' => array(
'route' => '/',
'defaults' => array(
'module' => 'core',
'controller' => 'index',
'action' => 'index'
)
),
'confirm' => array(
'route'=>'/confirm',
'defaults' => array(
'module'=>'core',
'controller'=>'confirm',
'action'=>'confirm'
)
),
// Admin - General
'core_admin_settings' => array(
'route' => "admin/core/settings/:action/*",
'defaults' => array(
'module' => 'core',
'controller' => 'admin-settings',
'action' => 'index'
),
'reqs' => array(
'action' => '\D+',
)
),
)
将路由保存在名为manifest.php
的文件中答案 0 :(得分:1)
如果您在创建 Zend_Navigation_Page_Mvc 对象时使用自定义路线,则必须明确设置模块,控制器和操作。
请参阅示例#4使用路径下的Zend_Navigation Documentation:
注意:请注意,在页面中使用route属性时,还应指定路径定义的默认参数(模块,控制器,操作等),否则isActive()方法将无法确定页面是否处于活动状态。
如果您不使用路线,请提供有关您的准则的更多信息。
关于您的更新:
您的Zend_Navigations必须如下所示
new Zend_Navigation(array(
array(
'label' => 'Home',
'module' => 'core',
'controller'=> 'index',
'action' => 'index',
'route' => 'core'
),
array(
'label' => 'Admin Settings',
'module' => 'core',
'controller'=> 'admin-settings',
'action' => 'index',
'route' => 'core_admin_settings'
),
array(
'label' => 'User Administration',
'module' => 'core',
'controller'=> 'admin-settings',
'action' => 'users',
'route' => 'core_admin_settings'
),
));
然后,isActive()方法应该像预期的那样工作。
答案 1 :(得分:0)
如果你没有指定模块,控制器和动作变量,你不能不熟练地使用isActive()方法