欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

thinkphp5實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)

 更新時(shí)間:2019年02月18日 10:41:30   作者:知末隨未  
這篇文章主要為大家詳細(xì)介紹了thinkphp5實(shí)現(xiàn)無(wú)限級(jí)分類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

tp5對(duì)分類(lèi)數(shù)據(jù)表的信息讀取與展示,我們即可以控制器完成,也可以在對(duì)應(yīng)的模型中完成。本案例,我們?cè)谀P椭型耆?。況且,對(duì)數(shù)據(jù)表的增,刪改查操作,本來(lái)就是模型的本職工作。

首先聲明一下,我們采用遞歸的方式來(lái)實(shí)現(xiàn)無(wú)限分類(lèi)。但無(wú)限分類(lèi)的實(shí)現(xiàn),不是只是遞歸一種方式,還有一種是全路徑方式,也可以實(shí)現(xiàn),不過(guò),這種方式通常用在全路徑導(dǎo)航菜單中。所以,這里我們還是用最常見(jiàn)的遞歸函數(shù)來(lái)實(shí)現(xiàn):無(wú)限分類(lèi)。

首先我們先創(chuàng)建一個(gè)靜態(tài)方法:getCate,為什么要靜態(tài)方式,因?yàn)殪o態(tài)方法執(zhí)行效率高,不需要實(shí)例化,而且,分類(lèi)查詢是使用非常頻繁的操作,很多查詢都要依賴分類(lèi)查詢的結(jié)果。

當(dāng)前的getCate方法,有三個(gè)參數(shù):

第一個(gè)是$pid,是父類(lèi)的id,默認(rèn)為0,表示從頂開(kāi)始查起。

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

在遞歸函數(shù)中,返回結(jié)果有三種方式:

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

第二種方式也不錯(cuò),是在函數(shù)中用static關(guān)鍵字,聲明一個(gè)靜態(tài)變量,它可以將每一次的遞歸執(zhí)行結(jié)果進(jìn)行累計(jì),最后再返回,非常好理解,但占用資源過(guò)多,執(zhí)行效率低;

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

第三個(gè)參數(shù),可以沒(méi)有,它是用來(lái)設(shè)置一下分類(lèi)之間的層次顯示的,可以讓結(jié)果看上去更直觀清晰。

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

控制器中調(diào)用代碼:

public function edit(Request $request)
{
 //1.獲取一下分類(lèi)id
 $cate_id = $request -> param('id');
 
 //2.查詢要更新的數(shù)據(jù)
 $cate_now = CategoryModel::get($cate_id);
 
 //3.遞歸查詢所有的分類(lèi)信息
 $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');
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • PHP利用百度ai實(shí)現(xiàn)文本和圖片審核

    PHP利用百度ai實(shí)現(xiàn)文本和圖片審核

    這篇文章主要介紹了PHP利用百度ai實(shí)現(xiàn)文本和圖片審核,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • php設(shè)計(jì)模式之正面模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

    php設(shè)計(jì)模式之正面模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

    這篇文章主要介紹了php設(shè)計(jì)模式之正面模式,結(jié)合星際爭(zhēng)霸游戲案例形式分析了php正面模式相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 給WordPress中的留言加上樓層號(hào)的PHP代碼實(shí)例

    給WordPress中的留言加上樓層號(hào)的PHP代碼實(shí)例

    這篇文章主要介紹了給WordPress中的留言加上樓層號(hào)的PHP代碼實(shí)例,這里只針對(duì)主評(píng)論而不針對(duì)層疊式的樓中樓里的評(píng)論,需要的朋友可以參考下
    2015-12-12
  • PHP文件大小格式化函數(shù)合集

    PHP文件大小格式化函數(shù)合集

    php中有一個(gè)系統(tǒng)自帶的計(jì)算文件大小的函數(shù),就是filesize(),但是這個(gè)函數(shù)是以字節(jié)為單位的,在一些情況下,我們需要很直觀的了解一個(gè)文件大小,就不僅僅需要字節(jié)B這個(gè)單位了,還需要KB,MB,GB,甚至更大TB,PB,所以我們需要自己寫(xiě)一些函數(shù)來(lái)格式化filesize()的輸出結(jié)果
    2014-03-03
  • php對(duì)數(shù)字進(jìn)行萬(wàn)、億單位的轉(zhuǎn)化

    php對(duì)數(shù)字進(jìn)行萬(wàn)、億單位的轉(zhuǎn)化

    在本篇文章里小編給大家整理了一篇關(guān)于php對(duì)數(shù)字進(jìn)行萬(wàn)、億單位的轉(zhuǎn)化,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-08-08
  • php設(shè)計(jì)模式之建造器模式分析【星際爭(zhēng)霸游戲案例】

    php設(shè)計(jì)模式之建造器模式分析【星際爭(zhēng)霸游戲案例】

    這篇文章主要介紹了php設(shè)計(jì)模式之建造器模式,結(jié)合星際爭(zhēng)霸游戲案例形式分析了PHP建造器模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • ThinkPHP中redirect用法分析

    ThinkPHP中redirect用法分析

    這篇文章主要介紹了ThinkPHP中redirect用法,實(shí)例分析了redirect重定向的各種常見(jiàn)操作技巧,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • 關(guān)于Yii中模型場(chǎng)景的一些簡(jiǎn)單介紹

    關(guān)于Yii中模型場(chǎng)景的一些簡(jiǎn)單介紹

    這篇文章主要給大家介紹了關(guān)于Yii中模型場(chǎng)景的一些簡(jiǎn)單介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Yii具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • PHP實(shí)現(xiàn)動(dòng)態(tài)web服務(wù)器方法

    PHP實(shí)現(xiàn)動(dòng)態(tài)web服務(wù)器方法

    這篇文章主要通過(guò)PHP技術(shù)實(shí)現(xiàn)動(dòng)態(tài)web服務(wù)器的方法,有需要的朋友可以借鑒。
    2015-07-07
  • php實(shí)現(xiàn)smarty模板無(wú)限極分類(lèi)的方法

    php實(shí)現(xiàn)smarty模板無(wú)限極分類(lèi)的方法

    這篇文章主要介紹了php實(shí)現(xiàn)smarty模板無(wú)限極分類(lèi)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php使用smarty模板實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢與無(wú)限極分類(lèi)的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12

最新評(píng)論