laravel無限極分類實現

laravel無限極分類實現

學習使用laravel,一個list列表中一個分類中含有子分類這種情況的實現方法。這裏使用兩種方法。
第一種方法
模型操作使用回調函數處理數據

    public function tree()
    {
        $category = $this->orderBy('cate_order','asc')->get();
        return $this->getTree($category,'cate_name','id','cate_pid','0');

    }

    public function getTree($data,$filed_name,$filed_id,$filed_fid,$pid)
    {
        $arr = array();
        foreach ($data as $k=>$v){
            if ($v->$filed_fid==$pid){
                $data[$k]['_'.$filed_name] =$data[$k][$filed_name];
                $arr[]=$data[$k];
                foreach ($data as $m =>$n){
                    if ($n ->$filed_fid == $v->$filed_id){
                        $data[$m]['_'.$filed_name] =" ┣".$data[$m][$filed_name];
                        $arr[]=$data[$m];
                    }
                }
            }
        }
        return $arr;
    }

控制器操作

    public function index()
    {
        $category = (new Category)->tree();
        return view('admin.category.index')->with('category',$category);
    }

頁面

                    @foreach($category as $v)
                        <tr>
                            <td class="tc">
                            </td>
                            <td class="tc">{{$v ->id}}</td>
                            <td>
                                <a href="#">{{$v ->_cate_name}}</a>
                            </td>
                            <td>{{$v ->cate_title}}</td>
                            <td>{{$v ->cate_view}}</td>
                            <td>
                                <a href="#">修改</a>
                                <a href="#">刪除</a>
                            </td>
                        </tr>
                     @endforeach

第二種方法
模型操作,(類似做無限級分類,使用遞歸處理數據)。

    public function tree($cate_pid=0)
    {
        $category =Category::where('cate_pid',$cate_pid)->get();  //第一次做的時候get()後面加了toArray(),頁面遍歷數據時報錯遍歷的不是對象,去掉後可行

        $arr = array();
        if (sizeof($category) !=0){
            foreach ($category as $k =>$datum) {
                $datum['list'] = $this->tree($datum['id']);
                $arr[]=$datum;
            }
        }
        return $arr;

    }

控制器操作

    public function index()
    {
        $category = (new Category)->tree();
        return view('admin.category.index')->with('category',$category);
    }

視圖遍歷

                 @foreach($category as $v)
                        @if($v->cate_pid == 0)
                        <tr>
                            <td class="tc">{{$v ->id}}</td>
                            <td>
                                <a href="#">{{$v ->cate_name}}</a>
                            </td>
                            <td>{{$v ->cate_title}}</td>
                            <td>{{$v ->cate_view}}</td>
                            <td>
                                <a href="#">修改</a>
                                <a href="#">刪除</a>
                            </td>
                        </tr>
                            @foreach($v->list as $li2)
                                <tr>
                                    <td class="tc">{{$li2 ->id}}</td>
                                    <td>
                                        <a href="#">{{$li2 ->cate_name}}</a>
                                    </td>
                                    <td>{{$li2 ->cate_title}}</td>
                                    <td>{{$li2 ->cate_view}}</td>
                                    <td>
                                        <a href="#">修改</a>
                                        <a href="#">刪除</a>
                                    </td>
                                </tr>
                            @endforeach
                        @endif
                    @endforeach
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章