> 백엔드 개발 > PHP 튜토리얼 > Infinitus 분류 트리 구조에 대한 간략한 소개

Infinitus 분류 트리 구조에 대한 간략한 소개

巴扎黑
풀어 주다: 2023-03-14 22:52:01
원래의
2290명이 탐색했습니다.

다음 편집기는 Infinitus 분류 트리 구조를 생성하는 간단한 방법을 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리도록 하겠습니다. 에디터를 따라가서 살펴보자

우선 렌더링을 살펴보자

최상위 분류는 사실 1차 분류이고, 2차 분류는 1차 분류의 하위범주라고도 한다. 이를 바탕으로 하위범주 역시 하위범주를 가질 수 있어 무한한 범주를 형성할 수 있다.

다음으로 구체적인 구현 코드를 살펴보겠습니다.

1. 컨트롤러의 필드별로 쿼리하여 모든 분류 정보를 알아봅니다. (id: 카테고리의 ID 값, cate_name: 카테고리의 이름 카테고리, pid :부모 ID, 정렬: 제목 순서 표시를 준비하지만 작성할 필요는 없습니다. )


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. 모델에 코드

해당 모델에 두 가지 메소드를 만듭니다. Controller

1. 모든 분류 정보를 쿼리하고 분류 트리를 생성하는 메서드를 호출합니다.


public function allCategory($field='*'){
     $data = $this->field($field)->select();
     return $this->tree($data);
   }
로그인 후 복사

2. 분류 트리 생성(재귀 사용, 데이터 전달 및 pid [부모 클래스 ID]) , level [제어에 사용되는 레이어 수, 표시 - 수량] 변수 2개, 초기값은 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. 뷰 파일에 코드


<p class="form-group">
        <label for="pid" class="col-sm-2 control-label no-padding-right">上级菜单</label>
        <p 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(&#39;-&#39;,$val[&#39;level&#39;]*4); ?>{$val.cate_name}
              </option> 
            </volist> 
          </select>
        </p>
      </p>
로그인 후 복사

이런 식으로 분류 트리가 생성됩니다. 무한 재귀가 가능한 구조가 완성되었습니다. 요약: 핵심 아이디어는 여전히 모델의 재귀 함수입니다. 처음에 전달되는 pid는 기본적으로 0입니다. 매번 재귀적으로 전달되는 pid는 상위 수준의 ID가 사용됩니다. 마지막으로 뷰 페이지가 표시되면 PHP 내장 함수를 호출하여 출력 시 계열을 구분하는 효과를 얻기 위해 '-'를 반복적으로 출력하는 데 사용됩니다.

위 내용은 Infinitus 분류 트리 구조에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿