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 使用 FilterCondition 和 FilterGroup 构建筛选条件,与 AI 自然语言查询 Agent 深度集成:
- 文本筛选(模糊/精确)
- 数字范围筛选
- 日期范围筛选
- 下拉选择筛选
- 关联实体筛选(支持 dot notation)
数据源
通过 DataSetInterface 抽象数据源,当前支持:
DoctrineDataSet:基于 Doctrine QueryBuilderDataSource:数据源基类- 支持自定义数据集实现
前端组件
前端通过 sunui_datagrid Twig 宏渲染:
twig
{% include 'components/datagrid.html.twig' with {
columns: columns,
data: paginator,
config: gridConfig
} %}特性
- 服务端分页与排序
- 多列筛选(AND/OR 组合)
- 数据导出
- 与 AI Agent 自然语言查询集成
- 配置持久化到数据库