国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - thinkphp5實現無限級分類

thinkphp5實現無限級分類

2019-06-12 12:52知末隨未服務器之家 PHP教程

這篇文章主要為大家詳細介紹了thinkphp5實現無限級分類,具有一定的參考價值,感興趣的小伙伴們可以參考一下

tp5對分類數據表的信息讀取與展示,我們即可以控制器完成,也可以在對應的模型中完成。本案例,我們在模型中完全成。況且,對數據表的增,刪改查操作,本來就是模型的本職工作。

首先聲明一下,我們采用遞歸的方式來實現無限分類。但無限分類的實現,不是只是遞歸一種方式,還有一種是全路徑方式,也可以實現,不過,這種方式通常用在全路徑導航菜單中。所以,這里我們還是用最常見的遞歸函數來實現:無限分類。

首先我們先創建一個靜態方法:getCate,為什么要靜態方式,因為靜態方法執行效率高,不需要實例化,而且,分類查詢是使用非常頻繁的操作,很多查詢都要依賴分類查詢的結果。

當前的getCate方法,有三個參數:

第一個是$pid,是父類的id,默認為0,表示從頂級開始查起。

第二個參數是返回的查詢結果,我們放在一個數組中返回,注意,這個變量是引入方式傳入的。

在遞歸函數中,返回結果有三種方式:

第一種就是大家比較熟悉的,使用全局變量$_GLOBALS[],這個方法有副作用,我們不用它;

第二種方式也不錯,是在函數中用static關鍵字,聲明一個靜態變量,它可以將每一次的遞歸執行結果進行累計,最后再返回,非常好理解,但占用資源過多,執行效率低;

第三種,就是采用引用參數的方式,來返回結果,這也是目前主流的技術。盡管理解起來有難度,但執行效率是最高的,我們要玩,就玩大的,所以這里,我們就直接采用引用,來返回查詢結果。

第三個參數,可以沒有,它是用來設置一下分類之間的層次顯示的,可以讓結果看上去更直觀清晰。

<?php
 
namespace app\admin\model;
 
use think\Collection;
use think\Model;
 
class Category extends Model
{
 //創建一個靜態方法getCate,來獲取分類信息
 
 /**
  * @param int $pid: 當前分類的父id
  * @param array $result:引用返回值
  * @param int $blank:設置分類之間的顯示提示
  */
 public static function getCate($pid=0, &$result=[], $blank=0)
 {
  //1.分類表查詢:$pid
  $res = self::all(['pid'=>$pid]);
 
  //2.自定義分類名稱前面的提示信息
  $blank += 2;
 
  //3.遍歷分類表
  foreach ($res as $key => $value) {
 
   //3-1自定義分類名稱的顯示格式
   $cate_name = '|--'.$value->cate_name;
   $value->cate_name = str_repeat(' ',$blank).$cate_name;
 
   //3-2將查詢到的當前記錄保存到結果$result中
   $result[] = $value;
 
   //3-3關鍵:將當前記錄的id,做為下一級分類的父id,$pid,繼續遞歸調用本方法
   self::getCate($value->id, $result, $blank);
  }
 
  //4.返回查詢結果,調用結果集類make方法打包當前結果,轉為二維數組返回
  return Collection::make($result)->toArray();
 }
}

控制器中調用代碼:

public function edit(Request $request)
{
 //1.獲取一下分類id
 $cate_id = $request -> param('id');
 
 //2.查詢要更新的數據
 $cate_now = CategoryModel::get($cate_id);
 
 //3.遞歸查詢所有的分類信息
 $cate_level = CategoryModel::getCate();
 
 //4.模板賦值
 $this -> view -> assign('cate_now', $cate_now);
 $this -> view -> assign('cate_level', $cate_level);
 
 
 //5.渲染模板
 return $this -> view -> fetch('category_edit');
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久久久久久久久久久久 | av一区二区三区四区 | 国产精品国产精品国产专区不卡 | 亚洲在线视频一区 | 国产精品视频久久 | 黄色综合 | 一级特黄毛片 | 99视频在线播放 | 亚洲久久久久 | 国产精品久久久久久久美男 | 九九综合 | 毛片在线免费 | 久久尤物免费一区二区三区 | 欧美国产综合一区 | 久久天天躁狠狠躁夜夜免费观看 | 成人毛片在线观看 | 男女羞羞网站 | 久久精品日产第一区二区三区 | 伊人网站 | 日本在线免费 | 亚洲国产精品久久久久 | 91久久综合 | 久久午夜精品 | 久久久久综合精品福利啪啪 | 成人免费视频视频在线观看 免费 | 国产成人精品网站 | 国产精品久久久久免费a∨ 狠狠影院 | 亚洲一区二区中文字幕 | 亚洲国产精品99久久久久久久久 | 欧美一区永久视频免费观看 | 毛片免费视频 | 在线观看成人高清 | av电影免费在线看 | 在线视频二区 | aaa综合国产| 精品国产欧美一区二区三区成人 | 亚洲永久免费视频 | 亚洲激情一区二区 | 久久久成人免费一区二区 | 最新中文字幕在线 | 亚洲成人精品在线观看 |