ホームページ  >  記事  >  バックエンド開発  >  thinkphpの無限分類実装方法

thinkphpの無限分類実装方法

大家讲道理
大家讲道理オリジナル
2017-02-21 10:09:044886ブラウズ

この記事では、thinkphp フレームワークで無限分類を実装する方法について説明します。無限分類は、Web サイトの分類メニューで一般的に使用されます。このメソッドを thinkphp で実装するのも非常に簡単です。私たちはそれの使い方を学びます。

無限分類の原理は、区別するためのフィールド (Sid など) を追加することです。最上位の分類 Sid は 0、2 番目のレベルの分類 Sid は上位レベルの分類の ID になります。 。出力する場合は再帰が一般的に使用されます。

まず、次の構造を持つ新しいデータテーブルを作成しましょう:

thinkphpの無限分類実装方法

Controller: 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());
 }
 }}
 ?>

Model: 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 までご連絡ください。