n34n

n34n

这家伙有点懒,还没写个性签名!

  • 财富值30
  • 威望值10
  • 总积分170

个人信息

  • 2019-09-10 已签到
    连续签到1天,获得了5个金钱
  • 优化了一下方法,控制起来更灵活些,当然操作成本也多些,给碰到同样困扰的人

    #1 backend\components\Menu.php

    protected function isItemActive($item)
        {
            if (isset($item['url']) && is_array($item['url']) && isset($item['url'][0])) {
                $route = $item['url'][0];
                if (isset($route[0]) && $route[0] !== '/' && Yii::$app->controller) {
                    $route = ltrim(Yii::$app->controller->module->getUniqueId() . '/' . $route, '/');
                }
    
                $route = ltrim($route, '/');
    
                /* 高亮菜单
                 * 包含该控制器下的所有Actions
                 * */
                //---- 添加的代码 ----
                $_route = substr($route,0,strrpos($route,"/"));
                if(isset($item['options']['child'])){
                    $children       = $item['options']['child'];
                    $controllerId   = Yii::$app->controller->id;
                    $actionId       = Yii::$app->controller->action->id;
                    if($_route == $controllerId && in_array($actionId,$children)){
                        return true;
                    }
                }
                //---- 添加的代码 ----
    
    
                if ($route != $this->route && $route !== $this->noDefaultRoute && $route !== $this->noDefaultAction) {
                    return false;
                }
    
                unset($item['url']['#']);
                if (count($item['url']) > 1) {
                    foreach (array_splice($item['url'], 1) as $name => $value) {
                        if ($value !== null && (!isset($this->params[$name]) || $this->params[$name] != $value)) {
                            return false;
                        }
                    }
                }
    
    
    
    
                return true;
            }
            return false;
        }
    

    #2 父级菜单的Data数据,增加child元素,这个可以自己定义的,比如/users/index路由,做到菜单里面,user控制器有增、改、查3个方法,就在/users/index的菜单Data里设置如下child数组,设置好后上方的Menu新增代码部分,就通过判断当前action在不在当前controller的child里面,从而实现是否高亮

    {"icon": "flag-checkered", "visible": true,"child":["create","update","view"]}
    
  • 发布了教程
    Yii2 使用左侧菜单不高亮问题简单解决办法
  • ???
    你们都不用exist??

    ['email', 'exist', 'targetClass' => '\common\models\User', 
    'filter' => ['email' => $this->email],'message' => '该邮箱地址已注册'],
    
  • 2015-04-17 已签到
    连续签到1天,获得了5个金钱
助理 等级规则
170/200
资料完整度
20/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

0

Ta的访客

2