무한 분류(1부)
무한 분류
무한 분류란 무엇입니까:
무한 분류 간단히 말하면 클래스를 분자 클래스로 나눈 다음 하위 클래스를 다른 하위 범주로 나누고 마치 Windows가 새 폴더를 생성할 수 있는 것처럼 이 작업을 무한정 계속한 다음 이 폴더 내에 폴더를 생성합니다.
public function index(){ $cate=D('cate'); $cateres=$cate->catetree(); $this->assign('cateres',$cateres); $this->display(); }
먼저 인덱스 컨트롤러에 템플릿을 작성하고 $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 method
$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씩 증가함을 나타냅니다. 찾아낸 결과는 다음과 같습니다.
계속해서 몇 가지를 추가하여 확인하고 있습니다
이것이 우리의 무한 분류의 간단한 원리입니다.