欢迎光临
我们一直在努力

Laravel5无限分类设计

商品或者文章后台都会用到分类,再实际开发过程中也遇到不少坑,在网上也找了不少的资料,现在把需要的资料记录一下分享给大家。
在模型类(Modles/Category)里加入如下代码:

//获取所有分类
public function getAllCate()
{
    //输出数据库的所有内容
    $sql = Category::orderBy('id','ASC')->orderBy('sort','ASC')->get();
    //调用_getCate方法
    $result = self::_getCate($sql, $pid=0);
    return $result;
}

/**
*$cate  laravel查询出来的一个结果集 对象形式
*$level 循环次数
*$pid   0 代表的是顶级菜单
*/
public function _getCate($data, $pid=0, $level=0, $str_repeat='├ ')
{
    //创建一个静态数组保存数据
    static $array = array();
    //循环出所有的有关数据保存进数组
    foreach ($data as $v){
        //当第一循环是pid==0 因为上面已经设置pid==0
        if($v->pid == $pid){
	    //这里是为了区分级别
	    $v->level=$level;
	    $v->name = str_repeat($str_repeat, $v->level) . $v->name;
	    //将有关数据保存如数据
	    $array[]=$v;
	    //为了将有关数据保存数据,这里使用递归
	    self::_getCate($data,$v->id,$level+1);
	    }
    }
    //将最后的内容输出返回
    return $array;
}

在控制器(CategoryController)中调用:

public function index()
{
   $data = (new Category)->getAllCate();
   return view('backend.post-category.index', compact('data'));
}

public function create(Request $request)
{
    //
    dd($_GET['id']);
    $cate = (new Category)->getAllCate();
    return view('backend.post-category.create', compact('cate'));
}
public function store(Request $request)
{
   //
   $this->validate($request, [
      'name'   => 'required|string|min:2|max:50',
       'alias'  => 'required|string|min:2|max:100',
       'pid'    => 'required|integer',
       'sort'   => 'required|integer',
       'status' => 'required|integer',
   ]);

   $input = $request->except('_token');
   $data = Category::create($input);

   return redirect('/admin/post-category/index');
}

public function edit($id)
    {
        //dd($id);
        //
        $data = Category::find($id);
        $cate = (new Category)->getAllCate();
        //dd($cate);
        return view('backend.post-category.edit', compact('data','cate','id'));
    }

public function update(Request $request, $id)
    {
        //
        $this->validate($request, [
            'name'   => 'required|string|min:2|max:50',
            'alias'  => 'required|string|min:2|max:100',
            'pid'    => 'required|integer',
            'sort'   => 'required|integer',
            'status' => 'required|integer',
        ]);

        $input = $request->except('_token');
        //dd($input);
        $data = Category::where('id','=',$id)->update($input);

        return redirect('/admin/post-category/index');

    }

未经允许不得转载:发现未来 » Laravel5无限分类设计

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

发现网服务 更专业 更方便

广告联系联系我们