Yii CMenu-活动类未呈现
Yii CMenu-活动类未呈现,yii,Yii,about/index-我们在菜单上找到了类-活动 关于/graphic-我们没有激活菜单上的类 关于/print-我们没有激活菜单上的类 请注意,菜单没有子项。 大约 无论用户是否使用图形、打印或其他方式,我们都希望突出显示关于的 我们如何才能做到这一点 我曾多次尝试编辑“url”参数。不走运 'items'=>array( array( 'label'=>'About', 'url'=>array('about/index')
about/index
-我们在菜单上找到了类-活动
关于/graphic
-我们没有激活菜单上的类
关于/print
-我们没有激活菜单上的类
请注意,菜单没有子项。
大约
无论用户是否使用图形、打印或其他方式,我们都希望突出显示关于的
我们如何才能做到这一点
我曾多次尝试编辑“url”参数。不走运
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index')
),
添加了活动
参数。这起作用了
活动:布尔值,可选,此菜单项是否处于活动状态
(当前选定)。如果菜单项处于活动状态而activeClass未处于活动状态
空,则其CSS类将附加activeClass如果选择此选项
如果未设置,则当
当前请求由url触发。请注意GET参数
“url”选项中未指定的内容将被忽略
我已经设置了那个属性。否则就不行了
然而,正如你在粗体行上看到的,他们说这应该是自动触发的。这不在这个案子上
我想这是因为Yii期望一个大约的子元素来应用该类,因为存在任何,我们必须强制它,以获得父元素
不过我不确定
添加了活动
参数。这起作用了
活动:布尔值,可选,此菜单项是否处于活动状态
(当前选定)。如果菜单项处于活动状态而activeClass未处于活动状态
空,则其CSS类将附加activeClass如果选择此选项
如果未设置,则当
当前请求由url触发。请注意GET参数
“url”选项中未指定的内容将被忽略
我已经设置了那个属性。否则就不行了
然而,正如你在粗体行上看到的,他们说这应该是自动触发的。这不在这个案子上
我想这是因为Yii期望一个大约的子元素来应用该类,因为存在任何,我们必须强制它,以获得父元素
但是不确定。CMenu正在将项目的路线与当前路线进行比较,因此默认情况下,它将仅适用于
关于/索引
我看到了两种强制方式-第一种是在项目列表中设置'active'=>true
:
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index'),
'active'=>Yii::app()->controller->id=='about',
),
或者您可以将CMenu类子类化并覆盖
CMenu::isItemActive($item,$route)
方法CMenu正在将项目的路由与当前路由进行比较,因此默认情况下,它仅适用于关于/索引
我看到了两种强制方式-第一种是在项目列表中设置'active'=>true
:
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index'),
'active'=>Yii::app()->controller->id=='about',
),
或者您可以将CMenu类子类化并覆盖CMenu::isItemActive($item,$route)
方法简单但有效:
$isActive = strpos(Yii::app()->controller->route, 'about/') === 0;
// ....
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index'),
'active' => $isActive
),
还有。。。
要仅为控制器激活菜单(无论操作如何),请执行以下操作:
$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或$action变量,您可以将它们用于更多菜单项。你的代码会更干净
- 您将100%确定,菜单项将“保持”活动
$isActive = strpos(Yii::app()->controller->route, 'about/') === 0;
// ....
'items'=>array(
array(
'label'=>'About',
'url'=>array('about/index'),
'active' => $isActive
),
还有。。。
要仅为控制器激活菜单(无论操作如何),请执行以下操作:
$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或$action变量,您可以将它们用于更多菜单项。你的代码会更干净
- 您将100%确定,菜单项将“保持”活动