getRoleRules(['*']); $compareData = Db::name("auth_rule")->where([ 'name'=>['not in',$rules] ])->select(); $compareData = collection($compareData)->toArray(); foreach ($compareData as $rule){ echo "{$rule['name']} - {$rule['title']}
"; } } /** * 构建menu_auth.php文件 * @return string[] */ public function build() { $bindRule = config('menu_bind_rule'); $tree = []; foreach ($bindRule as $role => $urls){ $rules = []; if(!empty($urls)){ foreach ($urls as $url){ $rules = array_merge($rules,$this->getMenuRules($url)); } } $tree[$role] = $rules; } $this->buildMenuAuthFile($tree); } public function getMenuRules($name){ $rule = Db::name('auth_rule')->where([ 'name'=>$name ])->find(); if(!$rule){ return []; } $data = []; $rules = $this->getChildRules($rule['id']); foreach ($rules as $key => $item){ $data[$key] = $item; } $data[$rule['name']] = $rule['title']; return $data; } public function getChildRules($id,$rules = []){ $urls = Db::name('auth_rule')->where([ 'pid'=>$id ])->field(['name','title','id'])->select(); if($urls){ foreach($urls as $k=>$v){ $rules[$v['name']] = $v['title']; $rules = $this->getChildRules($v['id'],$rules); } } if(!$rules){ return []; } //按照rule去重 return array_merge([], $rules); } /** * 构建菜单文件 * @return void */ public function buildMenuAuthFile($rules){ // 将数组结构保存为 PHP 文件 $phpContent = "