封装无限极菜单分类方法
if(!function_exists("get_cate_list")){
//返回无限级分类菜单
function get_cate_list($list,$pid=0,$f=0){
//声明一个静态数组存储处理后的数据
static $arr = [];
foreach($list as $val){
if($val['pid']==$pid){
$val['level'] = $f;
$arr[]=$val;
get_cate_list($list,$val['id'],$f+1);
}
}
return $arr;
}
}
查询权限
public function index()
{
//接收参数
$keywords = input('get.keywords', "");
//调用模型查询权限菜单
$auths = Auth::getAuths($keywords);
//处理成层级显示
$auths = get_cate_list($auths);
// 返回数据
return success($auths);
}
新增权限方法
public function save(Request $request)
{
$data=$request->post();
//接收数据验证
try {
$validated = $this->validate($data, [
'auth_name|权限名称' => 'require',
'pid|父级权限名称' => 'require',
'is_nav|是否是菜单'=>'require',
]);
}catch (ValidateException $exception){
return fail($exception->getMessage());
}
//默认为顶级权限
$data['level']=0;
$data['pid_path']=0;
//判断添加的是否为顶级权限
if ($data['pid']!=0){
//查询处父级权限信息
$parentAuth=Auth::getAuth($validated['pid']);
//level:父级权限的level+1
$data['level']=$parentAuth['level']+1;
//pid_path:父级权限的pid_path+父级权限的id
$data['pid_path']=$parentAuth['pid_path'].'_'.$parentAuth['id'];
}
try {
$addAuth=Auth::addAuth($data);
}catch (ValidateException $exception){
return fail($exception->getMessage());
}
return success($addAuth);
}
显示指定资源
public function read($id)
{
//判断传入id必须为纯数字且不是0
if (!is_numeric($id) || $id == 0){
return fail("参数格式不正确");
}
//查询详情信息返回
try{
$authDate=Auth::getAuth($id);
}catch (ValidateException$exception){
return fail($exception->getMessage());
}
return success($authDate);
}
定义查询权限信息模型
// 查询权限信息
public static function getAuths($authName){
return self::where('auth_name','like',"%$authName%")->select();
}
定义查询父级权限模型
// 查询父级权限
public static function getAuth($pid){
return self::find($pid);
}
定义增加权限信息模型
//增加权限信息
public static function addAuth($data){
return self::create($data);
}
}