Laravel 节点列表
模型层:
//绑定数据表’ protected $table = 'node'; protected $guarded = []; //获取全部数据 public function getAllList() { $data = self::get()->toArray(); return $this->treeLevel($data); } //数组的合并,并加上html标识前缀 public function treeLevel(array $data, int $pid = 0, string $html = '--', int $level = 0) { static $arr = []; foreach ($data as $val) { if ($pid == $val['pid']) { // 重复一个字符多少次 $val['html'] = str_repeat($html, $level * 2); $val['level'] = $level + 1; $arr[] = $val; $this->treeLevel($data, $val['id'], $html, $val['level']); } } return $arr; }
控制器:
//节点 public function index(){ $data =(new Node)->getAllList(); return view('ten.node',['data'=> $data]); } //新增节点 public function add(){ //查找节点为0的 $data = DB::table('node')->where('pid',0)->get(); return view('ten.add',['data'=>$data]); } //添加处理 public function dotenadd(Request $request){ $data = $request->except('_token','id'); //获取所有数据 $data['pid'] = $request['id']; $res = DB::table('node')->insert($data); if($res){ return redirect(route('ten_list')); }else{ echo '添加失败'; } }
视图层
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="/css/jquery.js"></script> </head> <body> <form action="dotenadd" method="post" > {{csrf_field()}} <p> <select id="dev" name="id"> @foreach($data as $v) <option value="{{$v->id}}" >{{$v->name}}</option> @endforeach </select> </p> <p> <label for="a01"> 路由名称 <input type="text" name="name" id="a01"> </label> </p> <p> <label for="a01"> 路由别名 <input type="text" name="router_name" id="a01"> </label> </p> <p> 是否为菜单 <input type="radio" name="is_menu" value="是">是 <input type="radio" name="is_menu" value="否">否 </p> <p> <input type="submit"> </p> </form> </body> </html> <script> $('#dev').change(function(){ var a = $(this).val(); console.log(a); }) </script>
路由:
Route::group(['prefix'=>'ten'],function(){ Route::get('index','TenController@index')->name('ten_list'); //节点页面 Route::get('add','TenController@add')->name('ten_add'); //新增节点页面 Route::post('dotenadd','TenController@dotenadd')->name('dotenadd'); //添加处理 });