무한 분류 트 리 구 조 를 만 드 는 간단 한 방법
최고급 분 류 는 바로 1 급 분류 이 고 2 급 분 류 는 1 급 분류의 서브 분류 라 고도 부른다.이 를 바탕 으로 서브 분 류 는 서브 분 류 를 가 질 수 있어 서 무한 한 분 류 를 구성한다.
다음은 구체 적 으로 실 현 된 코드 를 살 펴 보 겠 습 니 다.
1.컨트롤 러 에서 필드 별로 조회 하여 모든 분류 정 보 를 조회 합 니 다(id:이 분류의 ID 값,catename:이 분류의 이름,pid:부모 ID,sorts:제목 순 서 를 표시 하기 위해 정렬 을 준비 합 니 다.쓰 지 않 아 도 됩 니 다.)
public function cate_display()
{
$cate = D('Cate');
$field = array('id','cate_name','pid','sorts');
$list = $cate->allCategory($field);
$this->assign('list',$list);
$this->display();
}
2.모델 중의 코드대응 하 는 컨트롤 러 모델 에 두 가지 방법 을 만 듭 니 다.
1.모든 분류 정 보 를 조회 하고 분류 트 리 생 성 방법 을 호출 합 니 다.
public function allCategory($field='*'){
$data = $this->field($field)->select();
return $this->tree($data);
}
2.분류 트 리 생 성(재 귀,데이터 전송,pid[부모 클래스 id],level[층수,표시-수량]두 변 수 를 제어 하고 초기 값 은 0)
public function tree($data,$pid=0,$level=0){
static $tree = array();
foreach($data as $k=>$v){
if($v['pid'] == $pid){
$v['level'] = $level;
$tree[]=$v;
$this->tree($data,$v['id'],$level+1);
}
}
return $tree;
}
3.보기 파일 의 코드
<div class="form-group">
<label for="pid" class="col-sm-2 control-label no-padding-right"> </label>
<div class="col-sm-6">
<select name="pid" style="width: 100%;">
<option selected="selected" value="0"> </option>
<volist name="row" id="val">
<option value="{$val.id}"><?php echo str_repeat('-',$val['level']*4); ?>{$val.cate_name}
</option>
</volist>
</select>
</div>
</div>
이렇게 하면 무한 재 귀 할 수 있 는 분류 트 리 구조 가 완 성 됩 니 다.정리:핵심 사상 또는 모델 중의 재 귀 함수 입 니 다.먼저 pid 기본 값 이 0 이 고 나중에 재 귀 할 때마다 들 어 오 는 pid 는 상급 id 입 니 다.level 은 재 귀 층 수 를 기록 하고 마지막 으로 보기 페이지 에 표시 할 때 PHP 내 장 된 함수 str 을 호출 합 니 다.repeat(),출력 을 반복 하 는 데 사 용 됩 니 다.위 에서 무한 분류 트 리 구 조 를 만 드 는 간단 한 방법 은 바로 소 편 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.