Export 操作
本文档将介绍 Export 操作和相关的配置选项。
基本配置
如果您已经注册了 SonataExporterBundle
扩展包,您可以从中受益,获得很大的灵活性
- 您可以全局配置默认的导出器。
- 您也可以全局添加自定义导出器。
- 您可以配置每个默认的写入器。
有关更多信息,请参阅 exporter 扩展包文档。
路由
您可以通过删除 Admin 中相应的路由来禁用导出实体。有关路由的更多详细信息,请参阅 路由
1 2 3 4 5 6 7 8 9 10
// src/Admin/PersonAdmin.php
final class PersonAdmin extends AbstractAdmin
{
protected function configureRoutes(RouteCollectionInterface $collection): void
{
// Removing the export route will disable exporting entities.
$collection->remove('export');
}
}
翻译
默认情况下,所有字段名称都会被翻译。内部机制会检查当前翻译文件中是否存在与翻译策略标签匹配的字段,并将字段名称用作回退。
选择要导出的字段
默认情况下,所有字段都会被导出。更准确地说,这取决于您正在使用的持久层后端,但例如,Doctrine ORM 后端会导出所有字段(关联不会导出)。如果您想为特定的管理员更改此行为,您可以重写 configureExportFields()
方法
1 2 3 4
protected function configureExportFields(): array
{
return ['givenName', 'familyName', 'contact.phone', 'getAddress'];
}
注意
请注意,您可以使用 contact.phone
来访问 `Contact` 实体的 phone
属性。或者,如果您有一些虚拟字段,可以使用 getter。
您还可以通过创建一个实现 configureExportFields()
方法的 admin 扩展来调整列表
1 2 3 4 5 6
public function configureExportFields(AdminInterface $admin, array $fields): array
{
unset($fields['updatedAt']);
return $fields;
}
覆盖特定管理员的导出格式
更改导出格式可以通过在您的 admin 类中定义 getExportFormats()
方法来完成
1 2 3 4
public function getExportFormats(): array
{
return ['pdf', 'html'];
}
自定义用于获取结果的查询
如果您想自定义用于获取特定管理员结果的查询,您可以覆盖 DataSourceInterface
类
1 2 3 4 5 6 7
final class DataSource implements DataSourceInterface
{
public function createIterator(ProxyQueryInterface $query, array $fields): \Iterator
{
// Custom implementation
}
}
然后您可以覆盖设置给 admin 类的 datasource。
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。