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 :
Contrôleur : CateAction .class .php
<?php class CateAction extends Action{ function index(){ $cate=M('Cate'); $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select(); foreach($list as $key=>$value){ $list[$key]['count']=count(explode('-',$value['bpath'])); } $this->assign('alist',$list); $this->display(); }//添加栏目 function add(){ $cate=new CateModel();if($vo=$cate->create()){ if($cate->add()){ $this->success('添加栏目成功'); }else{ $this->error('添加栏目失败'); } }else{ $this->error($cate->getError()); } }} ?>
Modèle : CateModel.class.php
<?php class CateModel extends Model{//对应数据库中的表xp_cate protected $_auto=array( array('path','tclm',3,'callback'), );function tclm(){ $pid=isset($_POST['pid'])?(int)$_POST['pid']:0; echo ($pid); if($pid==0){ $data=0; }else{ $list=$this->where("id=$pid")->find(); $data=$list['path'].'-'.$list['id'];//子类的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['id']}"> {:str_repeat(" ",$vo['count']-2)} {$vo['name']} </option> </volist> </select><br /> 新的栏目名称:<input type="text" name="name" /><br /> <input type="submit" value="添加栏目" /> </form>
Les résultats affichés sont les suivants :
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.