yii 使用yii-admin时左侧菜单在create、update时不高亮显示解决

首先源菜单使用到了dmstr\widgets\Menu, 在里面有一个方法isItemActive就是控制高亮显示的,由于源代码中存在private属性,不好继承,所以可以直接复制一份,比如放在common\components\BackendLeftMenu下,然后修改isItemActive。

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, '/');
            // 原来的代码
            /*if ($route != $this->route && $route !== $this->noDefaultRoute && $route !== $this->noDefaultAction) {
                return false;
            }*/
            // 新的代码
            $routeControllerArr = explode('/', $route);
            $routeController = '';
            if(count($routeController) > 0) {
                $routeController = $routeControllerArr[0];
            }
            if ($routeController != Yii::$app->controller->id && $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;
    }

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值