Dcat admin 的这个多级树是怎么展示出来的

Dcat admin 的这个多级树是怎么展示出来的

我的数据结构是

Dcat admin 的这个多级树是怎么展示出来的
我的代码

Dcat admin 的这个多级树是怎么展示出来的

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

应该是用的递归,先把所有数据查出来

protected function buildSelectOptions(array $nodes = [], $parentId = 0, $prefix = '', $space = ' ')
{
    $d = '├─';
    $prefix = $prefix ?: $d.$space;

    $options = [];

    if (empty($nodes)) {
        $nodes = $this->allNodes()->toArray();
    }

    foreach ($nodes as $index => $node) {
        if ($node[$this->getParentColumn()] == $parentId) {
            $currentPrefix = $this->hasNextSibling($nodes, $node[$this->getParentColumn()], $index) ? $prefix : str_replace($d, '└─', $prefix);

            $node[$this->getTitleColumn()] = $currentPrefix.$space.$node[$this->getTitleColumn()];

            $childrenPrefix = str_replace($d, str_repeat($space, 6), $prefix).$d.str_replace([$d, $space], '', $prefix);

            $children = $this->buildSelectOptions($nodes, $node[$this->getKeyName()], $childrenPrefix);

            $options[$node[$this->getKeyName()]] = $node[$this->getTitleColumn()];

            if ($children) {
                $options += $children;
            }
        }
    }

    return $options;
}
6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!