如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
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;
}
}
王明昌博客
