SuperAPI AI 工具集

bagisto-datagrid-development

数据与分析

查看项目

更新于 10-15 17:24

技能介绍

用途:在 Bagisto 中构建或修改后台列表页(DataGrid)。列表页由 DataGrid 子类加少量接线组成,引擎 packages/Webkul/DataGrid 负责分页、搜索、筛选、排序、已存筛选和导出;子类只提供查询并描述列。代码库中已有 51 个 DataGrid,建议复制最接近的一个而非自行发挥。

主要能力与四个方法:Webkul\DataGrid\DataGrid 声明两个抽象方法和两个可选钩子。prepareQueryBuilder()(必需)返回查询构建器,而非集合;prepareColumns()(必需)逐列调用 addColumn([...]);prepareActions()(可选)定义行操作,每个都需 ACL 权限校验;prepareMassActions()(可选)定义复选框批量操作,同样需 ACL 校验。可调属性仅在默认值不合适时覆盖:$primaryColumn(默认 id)、$sortColumn、$sortOrder(默认 desc)、$itemsPerPage(默认 10)、$perPageOptions。

使用方式:控制器在 AJAX 请求时返回 JSON,否则返回视图,同一路由两种响应;AJAX 分支使用 datagrid(CurrencyDataGrid::class)->process()。Blade 侧只需一个指向同一路由的标签:<x-admin::datagrid :src="route('admin.settings.currencies.index')" />。datagrid() 在类未继承 DataGrid 时抛出 InvalidDataGridException,因此类名是唯一契约。

必要约束:prepareQueryBuilder() 必须返回 builder,调用 ->get()、->paginate() 或转成集合会破坏分页、筛选和导出,因为引擎会向返回的查询追加条件。查询构建器是唯一预期使用 DB:: 的地方,其他地方都走 repository。每个行操作和批量操作都要用 bouncer()->hasPermission(...) 包裹,否则会向无权限管理员渲染该操作。每个标签都要经 trans(),并把键加入全部 22 个语言包。带连接的查询需为每个别名列调用 addFilter(),否则对该列筛选或排序会出现列名歧义 SQL 错误。闭包插值的值需做转义,单元格经 v-html 渲染,引擎会先剥离原始值中的标签但不处理引号,放入属性的值可能逃逸。调用任何变更完成前需先使用 bagisto-change-verification 子技能。

参考资料:columns.md(列类型、搜索/筛选/排序标志、下拉选项、闭包、连接与 addFilter);actions.md(行操作、批量操作、ACL 校验、导出)。

限制:资料未提供该技能的具体安装命令、收费、价格、支持平台或性能效果等事实。