无限级分类
什么是无限级分类:
无限极分类说简单点就是一个类可以分成一个分子类,然后一个子类又可以分另一个子类这样无限分下去,就是好象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。查出来的结果如下、
我们继续添加几个来查看
这就是我们的无限级分类的简单原理。