用途:在 OroCommerce v6.1 中创建和定制数据网格(datagrid),包括新建网格、添加列、配置过滤器、排序器、操作、批量操作与行内编辑。
主要能力:网格定义位于 bundle 的 Resources/config/oro/datagrids.yml,内核编译时自动发现加载。每个网格通常需要 source(ORM 查询,含 select、from/alias)、columns、filters(带 data_name)、sorters(带 data_name)和 actions。常见列类型有 string、integer、boolean、datetime、currency(需 currency_code 选项),完整列表见 references/column-types.md。
扩展方式:不要修改核心网格 YAML,应通过 BuildBefore 事件监听器以编程方式添加列、过滤器或修改配置;关联实体数据可用 onResultAfter 在取数后附加,而不是新增 JOIN。监听器示例(onBuildBefore、onResultAfter)、服务注册、join 模式、批量操作和行内编辑配置见 references/datagrid-patterns.md。
常见问题:sorters/filters 的 data_name 使用 d.subject 但查询未声明别名 d 时,排序会静默失败,务必核对别名一致;可用 php scripts/check-datagrid-aliases.php <file-or-dir> 检查。过滤器缺少 data_name 时界面可见但不产生 WHERE 子句。网格操作的 ACL 与实体 ACL 相互独立,mass_actions 的 acl_resource 和实体级 ACL 都需通过,资源需在 acl.yml 定义。
缓存:网格会编译进 DIC,修改 YAML 后需执行 php bin/console cache:clear。
限制:官方未提供更多功能、收费或平台信息;详细参考见 references/column-types.md、references/datagrid-patterns.md、references/v6.1.md。