laravel5.8无限极分类

创建资源控制器

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值