'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index')
),
about/index
- 我们在菜单上获得了课程 - 活跃。
about/graphic
- 我们不会让菜单上的课程处于活动状态。
about/print
- 我们不会让菜单上的课程处于活动状态。
请注意,菜单没有子项。 只有。
如果用户使用的是图形,打印或其他任何内容,我们希望突出显示关于。
我们怎样才能做到这一点?
我试图编辑那个'url'参数。没有运气。
答案 0 :(得分:4)
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index'),
'active'=>Yii::app()->controller->id=='about',
),
添加了active
参数。这很有用。
active:boolean,optional,此菜单项是否处于活动状态 (目前已选中)。如果菜单项处于活动状态而activeClass未处于活动状态 为空,其CSS类将附加activeClass。 如果有此选项 未设置,菜单项将自动设置为活动时 当前请求由url触发。请注意GET参数 “url”选项中未指定的内容将被忽略。
我已经设置了该属性。否则它将无效。
但是,正如您在粗线上看到的那样,他们说这应该是自动触发的。这不是在这种情况下。
我认为情况就是这样,因为Yii正在期待一个子元素,以便应用该类,因为有任何,我们必须强制它,以取代父母。
但不确定。
答案 1 :(得分:1)
CMenu正在将项目的路线与当前路线进行比较,因此默认情况下它仅适用于about/index
。
我看到两种强制方式 - 首先只是在项目列表中设置'active' => true
:
$isActive = strpos(Yii::app()->controller->route, 'about/') === 0;
// ....
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index'),
'active' => $isActive
),
或者您可以继承CMenu类并覆盖CMenu::isItemActive($item,$route)
方法
答案 2 :(得分:0)
简单但有效:
$action = Yii::app()->controller->action->id; // this is the action name currently running
'items'=>array(
array(
'label'=>'About',
'url'=>'/about/something',
'active'=>$action == 'something',
),
...也 激活菜单,无论操作如何,仅适用于控制器:
$controller = Yii::app()->controller->id; // this is the controller name
...
'active'=>$controller == 'something',
注意:
添加$ controller或$ action变量,您可以将它们用于更多菜单项。您的代码将更清晰。
您将100%确定,菜单项将“坚持”活跃