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

大家讲道理
Libérer: 2023-03-05 21:40:02
original
4885 Les gens l'ont consulté

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());
 }
 }}
 ?>
Copier après la connexion

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;
 }
 }
 ?>
Copier après la connexion

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>
Copier après la connexion

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.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!