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%确定,菜单项将“保持”活动


您可以转储$this->route的内容,您将看到$route与“about/index”不同。这就是菜单项不会自动激活的原因…您可以转储$this->route的内容,您将看到$route与'about/index'不同。这就是为什么菜单项不会自动激活。。。