Skip to content

Utils 工具类

工具类提供了常用的工具方法。

类列表

TreeHtmlFormatter

树结构 HTML 格式化工具类,提供了将树形数据格式化为 HTML 结构的功能。

TreeHtmlFormatter 使用

TreeHtmlFormatter 用于将树形结构数据转换为带缩进字符的扁平数据,适用于下拉选择器、表格显示等场景。

类位置Siushin\Util\Utils\TreeHtmlFormatter

详细使用方法请参考 生成树数据(带缩进字符) 文档。

基本用法

php
use Siushin\Util\Utils\TreeHtmlFormatter;

// 假设已有树形结构数据(通过 Tree::getTree() 获得)
$treeData = [
    [
        'id' => 1,
        'name' => '父节点1',
        'parent_id' => 0,
        'children' => [
            [
                'id' => 2,
                'name' => '子节点1-1',
                'parent_id' => 1,
            ],
        ],
    ],
];

// 创建 TreeHtmlFormatter 实例
$formatter = new TreeHtmlFormatter([
    'id_field'       => 'id',
    'output_id'      => 'id',
    'title_field'    => 'name',
    'children_field' => 'children',
    'output_title'   => 'name',
    'fields'         => ['id', 'name'],
]);

// 格式化数据
$flatData = $formatter->format($treeData);

配置参数说明

参数类型说明
id_fieldstring树形数据中的主键字段名
output_idstring输出数据中的ID字段名(通常与 id_field 相同)
title_fieldstring树形数据中的标题字段名
children_fieldstring子节点字段名(默认为 'children')
output_titlestring输出数据中的标题字段名(会添加缩进字符)
fieldsarray要输出的字段列表(可选,默认输出所有字段)
indent_prefixstring缩进前缀(默认为 '│ ')
branch_middlestring中间分支符号(默认为 '├─ ')
branch_laststring最后分支符号(默认为 '└─ ')

在 Controller 中使用

php
use Siushin\Util\Utils\TreeHtmlFormatter;

class OrganizationController extends Controller
{
    /**
     * 获取组织架构树状Html数据
     */
    public function getFullTreeDataForHtml(): JsonResponse
    {
        $params = trimParam(request()->all());

        // 获取树形数据
        $treeData = Organization::getTreeData($params);

        if (empty($treeData)) {
            return success([]);
        }

        // 使用 TreeHtmlFormatter 格式化数据
        $formatter = new TreeHtmlFormatter([
            'id_field'       => 'organization_id',
            'output_id'      => 'organization_id',
            'title_field'    => 'organization_name',
            'children_field' => 'children',
            'output_title'   => 'organization_name',
            'fields'         => ['organization_id', 'organization_name'],
        ]);

        $htmlData = $formatter->format($treeData);

        return success($htmlData);
    }
}

返回结果示例

php
[
    [
        'id' => 1,
        'name' => '├─ 父节点1'
    ],
    [
        'id' => 2,
        'name' => '├─ └─ 子节点1-1'
    ],
    [
        'id' => 3,
        'name' => '├─ 父节点2'
    ],
]

缩进字符说明

  • ├─:表示有兄弟节点的节点
  • └─:表示最后一个子节点
  • :表示层级连接线

缩进字符会根据层级自动添加,例如:

  • 第一层:├─ 节点名称
  • 第二层:├─ └─ 节点名称
  • 第三层:├─ └─ └─ 节点名称

Copyright © 2025-2026 GPAdmin. All rights reserved.