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

Tags: