>  기사  >  백엔드 개발  >  thinkphp 무한 분류 구현 방법

thinkphp 무한 분류 구현 방법

大家讲道理
大家讲道理원래의
2017-02-21 10:09:044819검색

이 글에서는 thinkphp 프레임워크에서 무한 분류를 구현하는 방법을 설명합니다. 무한 분류는 일반적으로 웹사이트의 분류 메뉴에서 사용되는 매우 일반적인 데이터 구조 및 기능입니다. 이 방법도 thinkphp에서 구현하기가 매우 쉽습니다. .좋아, 다음에는 사용법을 배워보자.

무한 분류의 원리는 차별화를 위한 필드(예: Sid)를 추가하는 것입니다. 최상위 분류 Sid는 0이고, 두 번째 분류 Sid는 해당 ID입니다. 상위 분류 등이 있습니다. 출력할 때 일반적으로 재귀를 사용합니다.

먼저 다음 구조로 새 데이터 테이블을 만듭니다.

thinkphp 무한 분류 구현 방법

컨트롤러: CateAction .class .php

<?php
 class CateAction extends Action{
 function index(){
 $cate=M(&#39;Cate&#39;);
 $list=$cate->field("id,name,pid,path,concat(path,&#39;-&#39;,id) as bpath")->order(&#39;bpath&#39;)->select();
 foreach($list as $key=>$value){
 $list[$key][&#39;count&#39;]=count(explode(&#39;-&#39;,$value[&#39;bpath&#39;]));
 }
 $this->assign(&#39;alist&#39;,$list);
 $this->display();
 }//添加栏目
 function add(){
 $cate=new CateModel();if($vo=$cate->create()){
 if($cate->add()){
 $this->success(&#39;添加栏目成功&#39;);
 }else{
 $this->error(&#39;添加栏目失败&#39;);
 }
 }else{
 $this->error($cate->getError());
 }
 }}
 ?>

모델: CateModel.class.php

<?php
 class CateModel extends Model{//对应数据库中的表xp_cate
 protected $_auto=array(
 array(&#39;path&#39;,&#39;tclm&#39;,3,&#39;callback&#39;),
 );function tclm(){
 $pid=isset($_POST[&#39;pid&#39;])?(int)$_POST[&#39;pid&#39;]:0;
 echo ($pid);
 if($pid==0){
 $data=0;
 }else{
 $list=$this->where("id=$pid")->find();
 $data=$list[&#39;path&#39;].&#39;-&#39;.$list[&#39;id&#39;];//子类的path为父类的path加上父类的id
 }
 return $data;
 }
 }
 ?>

템플릿 :index .html

<form action="!-URL-!/add" method="post">
 请选择父级栏目:<select name="pid" size="20">
 <option value="0">根栏目</option>
 <volist name="alist" id="vo">
 <option value="{$vo[&#39;id&#39;]}">
   {:str_repeat(" ",$vo[&#39;count&#39;]-2)}
 {$vo[&#39;name&#39;]}
 </option>
 </volist>
 </select><br />
 新的栏目名称:<input type="text" name="name" /><br />
 <input type="submit" value="添加栏目" />
 </form>

표시된 결과는 다음과 같습니다.

thinkphp 무한 분류 구현 방법


참고:

이 문서에서 구현된 무한 수준 분류는 ThinkPhP 프레임워크를 사용합니다. 즉, 컨트롤러, 템플릿, 모델 레이어가 명확하게 작성되어 있어 TP 프레임워크를 이해하지 못하는 학생들도 쉽게 이해할 수 있습니다. 프레임워크를 사용하는 방법에 대해 알아보겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.