You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii框架如何高亮当前菜单标签?默认激活inbox标签

解决Yii菜单标签默认激活与高亮问题

嘿,这事儿好办!在Yii 1.x里,我们可以通过给菜单项添加active参数,结合当前请求的动作判断,就能实现你要的效果:默认激活inbox标签,点击sent时自动高亮它。

直接上修改后的代码:

$this->breadcrumbs=array( 'Dailymarket Reports', ); 
$this->menu=array( 
    array(
        'label'=>'inbox', 
        'url'=>array('index'),
        // 默认激活inbox,除非当前是sent动作
        'active'=>Yii::app()->controller->action->id == 'index' || Yii::app()->controller->action->id != 'sent'
    ), 
    array(
        'label'=>'sent', 
        'url'=>array('sent'),
        // 当当前动作是sent时激活该标签
        'active'=>Yii::app()->controller->action->id == 'sent'
    ), 
);

如果想更简洁,还可以先把当前动作存成变量:

$this->breadcrumbs=array( 'Dailymarket Reports', ); 
$currentAction = Yii::app()->controller->action->id;
$this->menu=array( 
    array(
        'label'=>'inbox', 
        'url'=>array('index'),
        // 空动作(刚进入页面)或index动作时激活
        'active'=>empty($currentAction) || $currentAction == 'index'
    ), 
    array(
        'label'=>'sent', 
        'url'=>array('sent'),
        'active'=>$currentAction == 'sent'
    ), 
);

简单说下原理:

  • Yii::app()->controller->action->id 能获取当前执行的动作ID,比如访问index页面时这个值是'index',访问sent页面时是'sent'。
  • 菜单项的active属性接受布尔值,设为true就会触发框架自带的激活样式(一般是CSS里的.active类),实现高亮。
  • 第一个菜单项的判断逻辑,确保了只要当前不是sent页面,inbox就保持激活状态,刚进入页面时自然默认高亮它。

要是你的页面还没激活样式,自己加一段CSS就行:

.yii-nav li.active a {
    background-color: #2196F3; /* 换成你想要的高亮色 */
    color: #fff;
}

内容的提问来源于stack exchange,提问作者Mallesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:55:18