如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
id pid
controller
/** * 加载视图 * @return [type] [description] */ public function goods_group() { // 从数据库获取所有分类记录 $goods_group = \App\Goods_group::orderBy('sort','desc')->get(); // 将分类以及子分类整理排序 $goods_group = $this->_treeNode($goods_group->toArray(),0); // 加载视图及分配数据 return view("admin/goods/goods_group",compact('goods_group')); } /** * 整理排序所有分类 * @param array $data 从数据库获取的分类 * @param integer $parentId 父id,默认一级分类 * @return array */ private function _treeNode($data,$parentId = 0) { // 用于保存整理好的分类节点 $node = []; // 循环所有分类 foreach ($data as $key => $value) { // 如果当前分类的父id等于要寻找的父id则写入$node数组,并寻找当前分类id下的所有子分类 if($parentId == $value ['pid']) { $node [$key] = $value; $node [$key] ['childer'] = $this->_treeNode($data,$value ['id']); } } return $node; }
view
@foreach($goods_group as $k=>$vo) <tr> <td>{{$vo['id']}}</td> <td>{{$vo['pid']}}</td> <td>{{$vo['name']}}</td> <td>子类</td> <td><image src="{{$vo['banner']}}" /></td> <td>{{$vo['sort']}}</td> <td>{{$vo['status']}}</td> <td> <button class="layui-btn layui-btn-danger layui-btn-sm" href="#">属性</button> <button class="layui-btn layui-btn-sm" onclick='mcAdminShow("编辑","http://www.baidu.com")'>编辑</button><button class="layui-btn layui-btn-sm" >删除</button></td> </tr> @if(!empty($vo['childer'])) {{get_childer_node($vo['childer'])}} @endif @endforeach
function
/** * 产品分类获取子节点 * @param array $data [description] * @return [type] [description] */ function get_childer_node($data = []) { // 记录该分类的深度 static $callNum = 1; $fg = str_repeat('|----',$callNum); if(empty($data)) { return; } foreach ($data as $key => $vo) { echo " <tr> <td>{$vo['id']}</td> <td>{$vo['pid']}</td> <td>{$fg}{$vo['name']}</td> <td>子类</td> <td><image src='{$vo["banner"]}' /></td> <td>{$vo['sort']}</td> <td>{$vo['status']}</td> <td> <button class='layui-btn layui-btn-danger layui-btn-sm' href='#'>属性</button> <button class='layui-btn layui-btn-sm' onclick='mcAdminShow('编辑','http://www.baidu.com')'>编辑</button><button class='layui-btn layui-btn-sm' >删除</button></td> </tr> "; // 如果该分类的依旧有子分类则再次遍历输出 if(!empty($vo ['childer'])) { $callNum ++; get_childer_node($vo ['childer']); } // 重置分类层级 $callNum = 1; } }