Skip to content

DataGrid

DataGrid 是 Doggy 的数据表格组件,通过 DataGrid 实体配置 + DataGridService 服务端驱动,支持分页、排序、筛选、导出等高级特性。

概述

DataGrid 系统由以下部分组成(src/Component/Database/):

Component/Database/
├── Bridge/
│   ├── DataSetInterface.php   # 数据集接口
│   ├── DataSource.php         # 数据源抽象
│   ├── DoctrineDataSet.php    # Doctrine 数据集实现
│   ├── FilterCondition.php    # 筛选条件
│   └── FilterGroup.php        # 筛选条件组
└── View/
    └── DataGrid.php           # DataGrid 视图组件

配置

DataGrid 通过 App\Entity\Platform\DataGrid 实体持久化配置,DataGridService 提供服务端支持:

php
use App\Service\Platform\DataGridService;

class DataGridController
{
    public function index(DataGridService $service): Response
    {
        $dataGrid = $service->findDataGridByEntityClass(Department::class);
        $config = $dataGrid->getDefaultConfigData();

        return $this->render('admin/index.html.twig', [
            'gridConfig' => $config,
        ]);
    }
}

筛选器

DataGrid 使用 FilterConditionFilterGroup 构建筛选条件,与 AI 自然语言查询 Agent 深度集成:

  • 文本筛选(模糊/精确)
  • 数字范围筛选
  • 日期范围筛选
  • 下拉选择筛选
  • 关联实体筛选(支持 dot notation)

数据源

通过 DataSetInterface 抽象数据源,当前支持:

  • DoctrineDataSet:基于 Doctrine QueryBuilder
  • DataSource:数据源基类
  • 支持自定义数据集实现

前端组件

前端通过 sunui_datagrid Twig 宏渲染:

twig
{% include 'components/datagrid.html.twig' with {
    columns: columns,
    data: paginator,
    config: gridConfig
} %}

特性

  • 服务端分页与排序
  • 多列筛选(AND/OR 组合)
  • 数据导出
  • 与 AI Agent 自然语言查询集成
  • 配置持久化到数据库

基于 MIT 协议开源 | Copyright © 2026 Doggy