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= $(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');  //添加处理
});

 

posted @ 2020-11-20 14:59  满眼都是她  阅读(116)  评论(0编辑  收藏  举报