Laravel 實現前台網站三級目錄
- 2019 年 12 月 23 日
- 筆記
資料庫設計
CREATE TABLE `dzushop_types` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(255) NOT NULL COMMENT '分類名稱', `pid` int(11) NOT NULL COMMENT '父分類ID', `path` varchar(255) NOT NULL COMMENT '路徑', `sort` int(255) NOT NULL COMMENT '分類排序', `is_lou` tinyint(1) NOT NULL COMMENT '是否是樓層分類', `title` varchar(255) NOT NULL COMMENT '分類標題', `keywords` varchar(255) NOT NULL COMMENT '分類關鍵字', `description` varchar(255) NOT NULL COMMENT '分類描述', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
資料庫設計思路,如何劃分父子分類,主要是看父分類ID及路徑欄位,路徑一直情況下根據共同前綴欄位進行劃分。
後台數據處理
/** * 前台首頁方法 * @return IlluminateContractsViewFactory|IlluminateViewView */ public function index(){ // 查詢導航欄導航 $types = DB::table('dzushop_types')->get(); // 處理導航欄 $type = $this->checkTypeData($types); // 賦值數據 $data = array( 'type' => $type, ); // 返回試圖並賦值 return view("home.index") ->with('data', $data); }讀取資料庫數據交給 checkTypeData 方法處理;
/** * 處理數組數據(遞歸) * @param $data * @param int $pid * @return array */ public function checkTypeData($data, $pid=0){ $newArr = array(); foreach($data as $key => $value){ if($value->pid == $pid){ $newArr[$value->id] = $value; $newArr[$value->id]->zi = $this->checkTypeData($data, $value->id); } } return $newArr; }前台數據遍歷
前台採用Laravel語法進行 foreach 三重循環遍曆數據,顯示結果。
@foreach($data['type'] as $one) <li> <div class="list_name"> <a href="#" target="_blank" class="list_nm" style="height:28px;line-height:28px" >{{ $one->name }} <span class="list_usepng list_icona"></span></a> <div class="list_cont"> <div class="list_lt"> @foreach($one->zi as $two) <div class="list_lta"> <p> <a href="#" target="_blank">{{ $two->name }}</a></p> <ul class="clearfix"> @foreach($two->zi as $three) <li> <a href="#" target="_blank"> {{ $three->name }}</a> </li> @endforeach </ul> </div> @endforeach </div> </div> </div> </li> @endforeach原文鏈接:https://www.debuginn.cn/3541.html
