美文网首页laravel
laravel5.8无限极分类

laravel5.8无限极分类

作者: 这真的是一个帅气的名字 | 来源:发表于2019-08-05 23:03 被阅读0次

    创建资源控制器

    php artisan make:controller -r
    

    创建模型和迁移文件

    php artisan make:model Cate -m
    

    修改迁移文件创建分类表

     Schema::create('cates', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->string("name",60)->comment("名称");
                $table->integer("pid")->default(0)->comment("上级ID");
                $table->integer("sort")->default(100)->comment("排序");
                $table->timestamps();
    });
    
    php artisan db:seed
    

    路由

    Route::get("/cate/index",'CateController@index')->name('cate.index');
    //允许post和get同时使用
    Route::match(['get','post'],"/cate/create",'CateController@create')->name('cate.create');
    

    控制器

     /**
         * 分类列表
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {
            $cate = new Cate();
            $list = $cate->getcates();
            return view("admin.cate.index")->with("list",$list);
        }
    
        /**
         * 添加分类
         *
         * @return \Illuminate\Http\Response
         */
        public function create(Request $request)
        {
            $category = new Cate();
            if($request->isMethod("POST")){
    
                $category->name = $request->cname;
                $category->sort = $request->sort;
                $category->pid = $request->pid;
                $res = $category->save();
                if($res){
                    $request->session()->flash("success","添加成功");
                }else{
                    $request->session()->flash("errormsg","用户名或密码错误");
                }
                return redirect('admin/cate/index');
            }
            $cates = $category->getcates();
            return view("admin.cate.create")->with("list",$cates);
        }
    

    模型

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Cate extends Model
    {
        //获取分类列表
        static public function getcates(){
            $cates = self::OrderBy("sort","Desc")->OrderBy("id","Desc")->get();
            $cates = self::makecates($cates);
            return $cates;
        }
    
    
        /**
         * @param $data
         * @param int $pid
         * @param int $level
         */
        static function makecates($data,$pid=0,$level=0){
            $arr = [];
            foreach ($data as $item){
                if($item->pid == $pid){
                    $item->level = $level;
                    $arr[] = $item;
                    $res = self::makecates($data,$item->id,$level+1);//递归
                    $arr = array_merge($arr,$res);
                }
            }
            return $arr;
        }
    }
    
    

    列表模板

     <div class="portlet box blue ">
    <div class="portlet-title">
        <div class="caption"><i class="icon-cogs"></i>分类列表</div>
    </div>
        @if(session()->has("errormsg"))
            <div class="alert alert-error ">
                <button class="close" data-dismiss="alert"></button>
                <span>{{ session("errormsg") }}</span>
            </div>
        @endif
        @if(session()->has("success"))
            <div class="alert alert-success ">
                <button class="close" data-dismiss="alert"></button>
                <span>{{ session("success") }}</span>
            </div>
        @endif
        <div class="portlet-body">
            <table class="table table-hover ">
                <thead>
                <tr>
                    <th class="text-center">ID</th>
                    <th class="text-center">分类名称</th>
                    <th class="text-center">父ID</th>
                    <th  class="text-center">排序</th>
                    <th class="text-center">操作</th>
                </tr>
                </thead>
                <tbody>
                @foreach($list as $item)
                <tr>
                    <td  class="text-center">{{ $item->id }}</td>
                    <td  class="text-center">{{ ($item->level == 0 ? "": "|") }}{{ str_repeat("----",$item->level) }}{{ $item->name }}</td>
                    <td  class="text-center">{{ $item->pid }}/{{ $item->level }}</td>
                    <td   class="text-center"class="hidden-480">{{ $item->sort }}</td>
                    <td  class="text-center">
                        <a href="#" class="btn mini red"><i class="icon-trash"></i> 删除</a>
                        <a href="#" class="btn mini blue"><i class=" icon-pencil"></i> 修改</a>
                    </td>
                </tr>
                @endforeach
    
                </tbody>
            </table>
        </div>
    </div>
    

    添加模板

    
     <form action="?" class="form-horizontal" method="post">
        @csrf
        <div class="control-group">
            <label class="control-label">分类名称</label>
            <div class="controls">
                <input type="text" name="cname" class="span6 m-wrap" />
            </div>
        </div>
    
        <div class="control-group">
            <label class="control-label">上级分类</label>
            <div class="controls">
                <select class="span6 m-wrap" name="pid" id="pid" data-placeholder="Choose a Category" tabindex="1">
                    <option value="0">顶级栏目</option>
                    @foreach($list as $res)
                    <option value="{{ $res->id }}">{{ ($res->level == 0 ? "": "|") }}{{ str_repeat("----",$res->level) }}{{ $res->name }}</option>
                    @endforeach
                </select>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label">排序</label>
            <div class="controls">
                <input type="text" name="sort" placeholder="100" class="span6 m-wrap" />
            </div>
        </div>
    
        <div class="form-actions">
            <button type="submit" class="btn blue">添加</button>
        </div>
    </form>
    
    

    相关文章

      网友评论

        本文标题:laravel5.8无限极分类

        本文链接:https://www.haomeiwen.com/subject/smxbdctx.html