n34n
- n34n 2019-09-10 已签到连续签到1天,获得了5个金钱
- n34n 评论了教程 Yii2 使用左侧菜单不高亮问题简单解决办法
优化了一下方法,控制起来更灵活些,当然操作成本也多些,给碰到同样困扰的人
#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"]}
???
你们都不用exist??['email', 'exist', 'targetClass' => '\common\models\User', 'filter' => ['email' => $this->email],'message' => '该邮箱地址已注册'],
- n34n 2015-04-17 已签到连续签到1天,获得了5个金钱