laravel笔记5 无线分类1
作者:互联网
错误提示
Class 'App\Http\Controllers\Admin\Category' not found
解决
namespace App\Http\Controllers\Admin; use App\Category; use Illuminate\Http\Request; use App\Http\Controllers\Controller; 创建相应控制器category的时候没有引入模型,所以在控制器文件最上面要引入控制器use App\Category; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++错误提示
ErrorException (E_ERROR)Route [admin.category.edit] not defined. (View: E:\phpStudy_64\phpstudy_pro\WWW\yfkt.com\resources\views\admin\category\index.blade.php)
解决
创建edit路由
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
分类模块如果没有使用resource创建路由 最后使用match方式来添加指定数据提交方式 然后在控制器里面这样写
public function create(Request $request){ //判断提交的方式是哪个 然后在保存到数据库 if($request->isMethod('post')){ // dd($request->post()); $category = new Category(); $category->name = $request->name; $category->sort = $request->sort; $result = $category->save(); //上述结果如果添加成功返回的是布尔值 checkreturn($result,'添加'); return redirect(route('admin.category.list')); } return view('admin.category.create'); +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++实现无限极分类功能(以城市为例)
首先要在模型里面获取数据 打开模型文件app下的Category.phpclass Category extends Model { //获取分类列表 static public function getcates(){ $cates = self::get(); return$cates; 返回数据以后,打开控制器app\Http\Controllers\Admin\CategoryController.php把数据with到视图模板里面 //添加分类 public function create(Request $request){ if($request->isMethod('post')){ // dd($request->post()); $category = new Category(); $category->name = $request->name; $category->sort = $request->sort; $category->pid = $request->pid; $result = $category->save(); //上述结果如果添加成功返回的是布尔值 checkreturn($result,'添加'); return redirect(route('admin.category.list')); } $cates = Category::getcates(); return view('admin.category.create')->with('cates',$cates); } } 最后到视图模板里面在相应的循环地方进行循环 <div class="form-group"> <label for="pid">上级分类</label> <select class="form-control" name = 'pid' id="pid"> <option value="0">顶级分类</option> @foreach ($cates as $item) <option value="{{$item->id}}">{{$item->name}}</option> @endforeach
###################################################################################
实现无限分类层级关系显示(补充)
首先到Category.php模型文件把获取的数据进行重组
class Category extends Model { //获取分类列表 static public function getcates(){ $cates = self::OrderBy('sort','Desc')->OrderBy('id','Desc')->get(); //$cates可以获取传入所有参数 $cates = self::makecates($cates); return$cates; } //重新组织数据 static function makecates($data,$pid=0,$level=0){ $arr = []; foreach ($data as $item){ if($item->pid == $pid){ $item->level = $level; $arr[] = $item; //如果pid相等,那么同一分类层级的数据放在arr数组里 //循环完同一层级的数据,然后用递归的方式找到低层级的数据 //$item->id就是相对应的item下的pid //找到相应item下的数据保存到临时的arr_tmp $arr_tmp = self::makecates($data,$item->id,$level+1); //把两个数据进行合并 最后返回$arr $arr = array_merge($arr,$arr_tmp); } } return $arr; } } 然后去控制器文件CategoryController里面修改获取数据的参数 public function index(){ //使用模型方式获取数据然后with到view模板 // $list = Category::Orderby('sort','Desc')->Orderby('id','Desc')->get(); $list = Category::getcates(); //dd($list); return view('admin.category.index')->with('list',$list); } 最后到blade模板里面在相应的地方修改 <div class="form-group"> <label for="pid">上级分类</label> <select class="form-control" name = 'pid' id="pid"> <option value="0">顶级分类</option> @foreach ($cates as $item) //使用三元运算符如果level是0的话名称前面是空,否则前面带一条竖线,同时根据level属性重复字符‘-----’ <option value="{{$item->id}}">{{($item->level==0)?'':'|'}}{{str_repeat('-----',$item->level)}}{{$item->name}}</option> @endforeach同时添加分类的时候在相应blade视图模板里面添加{{$item->id}}">{{($item->level==0)?'':'|'}}{{str_repeat('-----',$item->level)}}{{$item->name}}
标签:laravel,Category,level,request,笔记,item,cates,category,无线 来源: https://www.cnblogs.com/fightforcoder/p/13456229.html