2后台分类页-多级分类列表

Posted guduoduo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2后台分类页-多级分类列表相关的知识,希望对你有一定的参考价值。

分类中会出现一些分类属于另一分类,也就是子分类现象,为了在页面更好的展现这层隶属关系,我们需要优化一下

在数据表blog_catagory中插入一些新数据

思路:

将之前获得的数据进行筛选,如果cate_pid为0则代表该元组为父级分类,为其他的数据说明就是对应cate_id下的子分类。

为了之后的调用方便,定义传入的参数

1、数据的处理放到Category.php模型中,只需要给控制器返回数据结果。

 1 <?php
 2 
 3 namespace App\\Http\\Model;
 4 
 5 use Illuminate\\Database\\Eloquent\\Model;
 6 
 7 class Category extends Model
 8 {
 9     protected $table = \'category\';
10     protected $primaryKey = \'cate_id\';
11     public $timestamps=false;
12 
13     public function tree()
14     {
15         $categorys = $this->all();//获取blog_category表数据信息
16         //dd($categorys); //测试打印获得的数据
17         return $data=$this->getTree($categorys,\'cate_name\',\'cate_id\',\'cate_pid\');
18     }
19 
20 
21 //重新整合数据,使得子分类在父级分类之后
22      public function getTree($data,$field_name,$field_id=\'id\',$field_pid=\'pid\',$pid=0)
23     {
24         //dd($data);
25         $result=array(); //定义一个空数组,用于接收符合条件的对象,也可以$resullt=[]
26         foreach($data as $k=>$v)
27        {    
28             //print $k." value: ".$v."<br/>";//此时输出是以json格式输出
29             //var_dump($v); 查看数据类型是对象
30             //jsn_decode()函数用于对json格式的字符串进行解码,转化为php变量,assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象
31             //$v=json_decode($v,true);数组,自己的错误思想,不需要返回数组类型
32             
33             if($v->$field_pid==0){
34                 //$v=json_decode($v,true);
35                 //dd($v);
36                 $v["_".$field_name]=$v[$field_name]; //定义一个新的字段,如果为父级分类则是源数据内容,如果是子集分类,则加上一些标识,在视图中使用新的字段输出
37                 $result[]=$v;//将符合的对象压入数组中
38 
39                 //二次循环,判断是否有子集分类,如果有,则压入父级分类的后面
40                 foreach($data as $k1=>$v1)
41                 {
42                     if($v1->$field_pid==$v[$field_id]){
43                         $v1["_".$field_name]="|--- ".$v1[$field_name];
44                         $result[]=$v1;
45                     }                
46                 }
47             }
48         }
49 
50          return $result;
51     }
52 }

2、修改控制器CategoryController.php,调用tree()方法

错误调用:

$data=Category::tree();用类名称调用方法,此方法必须为静态类,而tree()不是,报错如下:

正确调用(1):

$data=(new Category)->tree(); //tree()公共方法,只能是类的对象调用,实例化类对象

正确调用(2):

将tree()方法加上static属性

由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用,需要修改tree()方法

 public  static function tree()
    {
        $categorys = Category::all();//获取blog_category表数据信息
        //dd($categorys); //测试打印获得的数据
        return $data=(new Category)->getTree($categorys,\'cate_name\',\'cate_id\',\'cate_pid\');
    }

验证:

 

以上是关于2后台分类页-多级分类列表的主要内容,如果未能解决你的问题,请参考以下文章

vue后台管理系统开发流程全记录_类别管理功能开发: 表单 | 表格 | 分页

工作总结2

Spring Boot制作个人博客-分类页

ecshop 后台分页功能

夺命雷公狗TP3.2.3商城14-----无限极分类列表页

1文章分类表的创建以及分类列表页模板导入