無限の分類 (パート 1)

#無制限の分類

2931721519-561aa0fe8bba4_articlex.png

# #Whatは無限分類です:

無限分類とは、単にクラスを分子クラスに分割し、サブクラスを別のサブクラスに分割するというように無限に分割できることを意味します。新しいフォルダーを作成し、このフォルダー内にフォルダーを作成できます。

public function index(){
        $cate=D('cate');
        $cateres=$cate->catetree();
        $this->assign('cateres',$cateres);
        $this->display();
    }

まずインデックス コントローラーにテンプレートを書き込み、$cateres が catetree() メソッドを呼び出します。

catetree() メソッドは、分類モデル層に次のように記述されます。

<?php
namespace Admin\Model;
use Think\Model;
class CateModel extends Model {

    protected $_validate = array(
      array('catename','require','管理员名称不得为空!',1),
    );


    public function catetree(){
        $data=$this->order('id desc')->select();
        return $this->resort($data);
    }

    public function resort($data,$pid=0,$level=0){
        static $arr=array();
        foreach ($data as $k => $v) {
            if ($v['pid']==$pid) {
                $v['level']=$level;
                $arr[]=$v;
                $this->resort($data,$v['id'],$level+1);
            }
        }
        return $arr;
    }

}

順番に実装方法を説明します。

catetree メソッド

データを取得します。$this はそれ自体を呼び出してクエリを実行し、ID を使用して並べ替えることを意味します。 return はクエリの結果を返します。

resortメソッド $data:取得データ

$pid=0:上位カテゴリは0から始まります

$level=0 分類レベル

最初にデータを保存する空の配列を作成し、foreach を使用して$v['pid']==$pid がトップレベル ID を意味する場合、$v['level']=$level もトップレベル カテゴリです。クエリされたデータは配列に格納されます。その後、自分自身を $this->resort($data,$v['id'],$level 1); と呼び続けます。 ここで、$data は $data と等しく、 $v['id'] は $pid と等しく、 $level 1 は、$level が 1 ずつ増加することを意味します。見つかった結果は次のとおりです。

QQ截图20170623144118.png

# さらにいくつか追加して見てみましょう

QQ截图20170623144430.png

これは、無限分類の単純な原理です。

学び続ける
||
<?php namespace Admin\Model; use Think\Model; class CateModel extends Model { protected $_validate = array( array('catename','require','管理员名称不得为空!',1), ); public function catetree(){ $data=$this->order('id desc')->select(); return $this->resort($data); } public function resort($data,$pid=0,$level=0){ static $arr=array(); foreach ($data as $k => $v) { if ($v['pid']==$pid) { $v['level']=$level; $arr[]=$v; $this->resort($data,$v['id'],$level+1); } } return $arr; } }
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜