码迷,mamicode.com
首页 > 其他好文 > 详细

分类模块——分类添加和列表

时间:2020-12-17 12:11:25      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:derby   格式   error:   success   管理   循环   mode   headers   结构   

1.在首页侧边栏创建分类模块地址链接

     <a href="javascript:;"><cite>分类管理</cite></a>
     <a _href="{{ url(‘admin/cate‘) }}"><cite>分类列表</cite></a>
     <a _href="{{ url(‘admin/cate/create‘) }}"><cite>添加分类</cite></a>

2.创建分类资源路由

    //后台分类模块相关路由
    Route::resource(‘cate‘, ‘CateController‘);    

3.创建分类控制器

f:\xampp\php\php.exe artisan make:controller Admin/CateController --resource

3.创建分类模型

f:\xampp\php\php.exe artisan make:model Model\Cate

4.编写分类模型属性

class Cate extends Model
{
    //1.关联的数据表
    public $table = ‘category‘;

    //2.主键
    public $primaryKey = ‘cate_id‘;

    //3.允许批量操作的字段
    //不允许的为空,意思是都允许
    public $guarded = [];

    //4.是否维护crated_at和updated_at字段
    public $timestamps = false;
}

5.编写分类添加控制器方法

    public function create()
    {
        //获取一级类
        $cate = Cate::where(‘cate_pid‘,0)->get();
        //返回分类添加页面
        return view(‘admin.cate.add‘,compact(‘cate‘));
    }

6.编写分类添加模板

  • 表单项
    <span class="x-red">*</span>分类名称
    <span class="x-red">*</span>分类标题
    <span class="x-red">*</span>排序
    <button class="layui-btn" lay-filter="add" lay-submit="">增加</button>
  • 表单name
    <input type="text" name="cate_name">
    <input type="text" name="cate_title">
    <input type="text" name="cate_order">
  • 循环一级分类数据,显示一级分类数据
     <select name="cate_pid">
           <option value="0">==顶级分类==</option>
        @foreach($cate as $v)
           <option value="{{ $v->cate_id }}">{{$v->cate_name}}</option>
        @endforeach
      </select>
  • 编写ajax,表单提交事件的add方法(用ajax来添加分类)
            form.on(‘submit(add)‘, function(data) {
                //发异步,把数据提交给php
                $.ajax({
                    type: ‘POST‘,
                    url: ‘/admin/cate‘,
                    dataType: ‘json‘,
                    headers: {
                        ‘X-CSRF-TOKEN‘: $(‘meta[name="csrf-token"]‘).attr(‘content‘)
                    },
                    //data.field为当前容器的全部表单字段,名值对形式:{name: value}
                    data: data.field,
                    success: function(data) {
                        //弹层提示添加成功,并刷新父页面
                        //console.log(data);
                        if (data.status == 0) {
                            layer.alert(data.message,{icon:6},function(){
                                parent.location.reload(true);
                            });
                        }else{
                            layer.alert(data.message,{icon:5});
                        }
                    },
                    error: function() {
                        //错误信息
                    }
                });
                return false;
            });

7.编写执行分类添加控制器方法

    public function store(Request $request)
    {
        //1.接收添加的分类数据
        $input = $request->except(‘_token‘);
        //2.表单验证

        //3.添加到数据库中
        $res = Cate::create($input);
        //4.根据添加是否成功,给客户端返回一个json格式的反馈
        if ($res) {
            $data = [
                ‘status‘=>0,
                ‘message‘=>‘添加成功‘,
            ];
        }else {
            $data = [
                ‘status‘=>1,
                ‘message‘=>‘添加失败‘,
            ];
        }
        //json_encode($data);
        return $data;
    }

8.编写分类列表控制器方法

    public function index()
    {
        //获取分类数据
        $cates = Cate::get();
        //将分类数据返回给分类页面
        return view(‘admin.cate.list‘,compact(‘cates‘));
    }

9.创建分类列表模板

  • 表单项
      <tr>
          <th>ID</th>
          <th>分类名称</th>
          <th>分类标题</th>
          <th>操作</th>
      </tr>
  • 循环展示表单数据
      @foreach($cates as $v)
      <tr>
          <td>{{ $v->cate_id }}</td>
          <td>{{ $v->cate_name }}</td>
          <td>{{ $v->cate_title }}</td>
          <td>
            <a title="编辑"></a>
            <a title="删除"></a>
          </td>
      </tr>
      @endforeach

10.将分类数据格式化成树形结构

  • 在分类模型中编写格式化成树形结构方法tree()
    //格式化分类数据的方法
    public function tree()
    {
        //获取所有的分类数据
        $cates = $this->orderBy(‘cate_order‘,‘asc‘)->get();

        //调用编写格式化方法getTree(),将格式化的分类数据返回给模型
        return $this->getTree($cates);
    }
  • 编写格式化方法getTree()
    //格式化分类数据的方法
    public function getTree($category)
    {
        //排序
        //定义存放最终排完序的分类数据数组$arr
        $arr = [];
        //1.循环所有分类数据先获取一级类
        foreach ($category as $k => $v) {
            //一级类(如果循环的数据的cate_pid==0,则它是一级类)
            if ($v->cate_pid == 0) {
                //将一级类放入$arr数组的值中
                $arr[] = $v;
                //2.获取一级类下的二级类
                //继续循环剩下的分类数据,
                foreach ($category as $m => $n) {
                    //如果一级分类的cate_id等于剩下循环出来的分类数据的cate_pid(父级分类id)
                    if ($v->cate_id == $n->cate_pid) {
                        //给二级类名称前面添加缩进
                        $n->cate_name = ‘|——‘.$n->cate_name;
                        //将二级类放入$arr数组的值中
                        $arr[] = $n;
                    }
                } 
            }
        }
        //将获得的排完序以后的数组$arr返回给tree()方法
        return $arr;
    }

11.在控制器中,调用分类排序完的数据

    public function index()
    {
        //实例化排完序的模型类,调用它的tree方法
        $cates = (new Cate())->tree();
        //将分类数据返回给分类页面
        return view(‘admin.cate.list‘,compact(‘cates‘));
    }

分类模块——分类添加和列表

标签:derby   格式   error:   success   管理   循环   mode   headers   结构   

原文地址:https://www.cnblogs.com/fangsheng90/p/14117748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!