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

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

我的数据结构是

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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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;
}
1周前 评论