Maison  >  Article  >  développement back-end  >  méthode de mise en œuvre de la classification infinie thinkphp

méthode de mise en œuvre de la classification infinie thinkphp

大家讲道理
大家讲道理original
2017-02-21 10:09:044886parcourir

Cet article explique la méthode d'implémentation de la classification infinie dans le cadre thinkphp. La classification infinie est généralement utilisée dans le menu de classification des sites Web. Il est également très simple d'implémenter cette méthode dans thinkphp. . D'accord, apprenons ensuite à l'utiliser.

Le principe de la classification infinie est d'ajouter un champ (tel que Sid) pour la différenciation. La classification de premier niveau Sid est 0, la classification de deuxième niveau Sid est l'ID du. classification de niveau supérieur, etc. Lors de la sortie, la récursivité est généralement utilisée.

Nous créons d'abord une nouvelle table de données avec la structure suivante :

méthode de mise en œuvre de la classification infinie thinkphp

Contrôleur : 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());
 }
 }}
 ?>

Modèle : 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;
 }
 }
 ?>

Modèle : 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>

Les résultats affichés sont les suivants :

méthode de mise en œuvre de la classification infinie thinkphp


Remarque :

La classification de niveau infini implémentée dans cet article utilise le framework ThinkPhP. C'est-à-dire que l'architecture MVC est adoptée. Les couches contrôleur, modèle et modèle sont clairement écrites pour ceux qui peuvent utiliser TP. S'il y a des étudiants qui ne comprennent pas le framework TP, vous pouvez d'abord comprendre. comment utiliser le framework. Retour sur notre style d'écriture.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn