­

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