128], [['route'], 'string', 'max' => 256], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'name' => '名称', 'parent' => '父级', 'route' => '路由', 'sort' => '排序', 'data' => '描述', ]; } //获取顶级菜单列表 public function getAllMenu(){ $menu = Yii::$app->db->createCommand("SELECT * FROM ".$this->tableName()." WHERE parent='0' ")->queryAll(); return $menu; } //获取所有菜单列表 public function getMenuList(){ $menu = Yii::$app->db->createCommand("SELECT * FROM ".$this->tableName()." ORDER BY sort ASC ")->queryAll(); $menu = self::list_to_tree($menu,'id','parent'); return $menu; } //获取左侧菜单列表 public function getLeftMenuList(){ $uid = Yii::$app->user->identity->getId(); $auth = Yii::$app->authManager; $Permission = $auth->getPermissionsByUser($uid); $RoutesList = ''; foreach($Permission as $vo){ $RoutesList .= "'".$vo->name."',"; } $RoutesList = substr($RoutesList,0,-1); if($RoutesList == ''){ $RoutesList = "'/index/welcome','/site/index'"; } $menu = Yii::$app->db->createCommand("SELECT * FROM ".$this->tableName()." WHERE route IN ($RoutesList) ORDER BY `order` ASC")->queryAll(); $menu = Yii::$app->db->createCommand("SELECT * FROM ".$this->tableName()." ORDER BY `order` ASC")->queryAll(); $menu = self::list_to_tree2($menu,'id','parent'); return $menu; } //通过id找到router public function getRouteById($id){ $router = Yii::$app->db->createCommand("SELECT * FROM `".$this->tableName()."` WHERE id='$id'")->queryOne(); return $router['route']; } /** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $level level标记字段 * @return array * @author 麦当苗儿 */ function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) { // 创建Tree $tree = array(); if(is_array($list)) { // 创建基于主键的数组引用 $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] =& $list[$key]; } foreach ($list as $key => $data) { // 判断是否存在parent $parentId = $data[$pid]; if ($root == $parentId) { $tree[] =& $list[$key]; }else{ if (isset($refer[$parentId])) { $parent =& $refer[$parentId]; $list[$key]['name'] ='    |--'.$list[$key]['name']; $parent[$child][] =& $list[$key]; } } } } return $tree; } function list_to_tree2($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) { // 创建Tree $tree = array(); if(is_array($list)) { // 创建基于主键的数组引用 $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] =& $list[$key]; } foreach ($list as $key => $data) { // 判断是否存在parent $parentId = $data[$pid]; if ($root == $parentId) { $tree[] =& $list[$key]; }else{ if (isset($refer[$parentId])) { $parent =& $refer[$parentId]; $list[$key]['name'] =$list[$key]['name']; $parent[$child][] =& $list[$key]; } } } } return $tree; } }