TP6 + Layui实现无限极分类

TP6 + Layui实现无限极分类

在做项目的时候遇到要做无限极分类的需求,查找了好久,终于找到一个最简单的写法。

数据库

在这里插入图片描述

thinkphp6 控制器方法

public function getAllData()
    {
        $data = Db :: name('auth_rule')->select()->toArray();

        $tree = getTree($data);
//        dump($tree);
        return json($tree);
    }

写在app\Common.php 中的公共方法

function getTree(array $items)
{
    $tree = []; // 格式化好的树

    /* 把数组的key跟id对应上 */
    $items_index = [];
    foreach ($items as $item) {
        $item = (array)$item;
        $item['spread'] = true;        //用于设置Layui树状组件节点展开,可忽略
        $items_index[$item['id']] = $item;
    }

    foreach ($items_index as $item) {
        if (isset($items_index[$item['pid']])) {
            $items_index[$item['pid']]['children'][] = &$items_index[$item['id']];
        } else {
            $tree[] = &$items_index[$item['id']];
        }
    }
    return $tree;
}

输出结果

在这里插入图片描述

前端Layui代码

<script>
    var $=layui.jquery;
    //获取数据的链接
    var getDataUrl = "/authRule/getAllData";
    layui.use(['tree', 'util'], function(){
        var tree = layui.tree
            ,layer = layui.layer
            ,util = layui.util
        $.ajax({
            type:'GET',
            url : getDataUrl,
            async : false,
            success:function (res) {
                data = res;
                // console.log(data)
            },
            error:function (res) {
                layer.msg('操作失败!', {icon: 2});
            }
        })
        //基本演示
        tree.render({
            elem: '#test12'
            ,data: data
            ,showCheckbox: true  //是否显示复选框
            ,id: 'demoId1'
            ,edit: ['del'] //操作节点的图标
        });
    });


</script>

渲染结果

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值