无限级分类(上)
无限级分类
什么是无限级分类:
无限极分类说简单点就是一个类可以分成一个分子类,然后一个子类又可以分另一个子类这样无限分下去,就是好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一个文件夹。
public function index(){ $cate=D('cate'); $cateres=$cate->catetree(); $this->assign('cateres',$cateres); $this->display(); }
先在index控制器编写模版,$cateres调用catetree()方法。
catetree()方法写在分类模型层如下
<?php namespace Admin\Model; use Think\Model; class CateModel extends Model { protected $_validate = array( array('catename','require','管理员名称不得为空!',1), ); public function catetree(){ $data=$this->order('id desc')->select(); return $this->resort($data); } public function resort($data,$pid=0,$level=0){ static $arr=array(); foreach ($data as $k => $v) { if ($v['pid']==$pid) { $v['level']=$level; $arr[]=$v; $this->resort($data,$v['id'],$level+1); } } return $arr; } }
下面我们来依次讲解如何实现。
catetree方法
获取数据,$this的意思是调用自身来查询,使用id来进行排序。return返回查询出来的结果。
resort方法
$data:获取的数据
$pid=0:顶级分类0开始
$level=0 分类级别
先创建一个空数组用来存放数据,foreach来遍历,如果$v['pid']==$pid意思是顶级id的话,那么$v['level']=$level也是顶级分类,讲查询的数据存放到数组中,接下来继续调用自身$this->resort($data,$v['id'],$level+1); 这里$data等于$data $v['id']等于$pid,$level+1代表$level每次加1。查出来的结果如下、
我们继续添加几个来查看
这就是我们的无限级分类的简单原理。