//前台页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>layout 后台大布局 - Layui</title>
<link rel="stylesheet" href="/layui/css/layui.css">
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
@include('common.head');
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
@include('common.left')
</div>
</div>
<div class="layui-body">
<!-- 内容主体区域 -->
<form class="layui-form" action="" method="get">
<label class="layui-form-label">控制器</label>
<div class="layui-input-block">
<select name="controller" lay-filter="role">
<option value="">请选择控制器</option>
@foreach ($data as $k=>$v)
<option value="{{$v}}"> {{ $v }}</option>
@endforeach
</select>
</div>
<label class="layui-form-label">方法</label>
<div class="layui-input-block">
<select name="fun" id="fun">
<option value="">请选择方法</option>
</select>
</div>
<label class="layui-form-label">选择权限</label>
<div class="layui-input-block">
<select name="power" id="fun">
@foreach ($arr as $k=>$v)
<option value="{{$v['id']}}"> {{ $v['power'] }}</option>
@endforeach
</select>
</div>
</form>
</div>
@include('common.foot')
<script src="/layui/layui.js"></script>
<script src="/js/jquery-3.3.1.js"></script>
<script>
layui.use(['form', 'layedit', 'laydate'], function(){
var form = layui.form;
form.on('select(role)',function (data) {
var controller=data.value;
$.ajax({
url:"/fun",
type:"get",
dataType:"json",
data:{
controller:controller
},success:function (data) {
console.log(data);
var str='<option>请选择方法</option>'
$.each(data,function (k,v) {
str+='<option value='+v+'>'+v+'</option>'
})
$('#fun').append($('#fun').html(str));
form.render('select')
}
})
})
});
</script>
</div>
</body>
</html>
//控制器代码
获取控制器
public function admin_node_add()
{
$res=dirname(__FILE__); //获取当前文件的绝对路径
$arr=scandir($res); //获取所有文件
$newarr=[];
foreach ($arr as $key=>$v)
{
$newarr[]=pathinfo($v,PATHINFO_FILENAME); //获取文件名
}
unset($newarr[0],$newarr[1],$newarr[2]); //删除当前路径和上级路径
$arr=new Power();
$arr=Power::get();
$arr= json_encode($arr);
$arr= json_decode($arr,1);
$arr=$this->gettree($arr,0);
return view('pra.nodeadd',['data'=>$newarr,'arr'=>$arr]); //传值
}
获取文件中的所有方法
public function fun(Request $request)
{
$class_name=$request->get('controller'); //获取请求参数
$class_name="App\Http\Controllers\\".$class_name; //构建类名称 包含命名空间
$c= new $class_name(); //动态化实例类对象
$arr1=get_class_methods($c); //调用系统函数 获取类中所有方法
if ($parent_class=get_parent_class($c))
{
$arr2=get_class_methods($parent_class); //获取父类方法
$arr3=array_diff($arr1,$arr2); //删除父类方法
}
else
{
$arr3=$arr1; //没有父类方法 就是所有的方法
}
echo json_encode($arr3);
}
//获取父类方法