Symfony Sonata Admin Bundle - 将带有树枝模板的自定义字段导出到 XLS
Posted
技术标签:
【中文标题】Symfony Sonata Admin Bundle - 将带有树枝模板的自定义字段导出到 XLS【英文标题】:Symfony Sonata Admin Bundle - export custom fields with twig templates to XLS 【发布时间】:2018-09-27 02:37:51 【问题描述】:代码
我的奏鸣曲管理类代码:
class UsersAdmin extends AbstractAdmin
.....
protected function configureListFields(ListMapper $listMapper)
$listMapper
->add('getSummaryTimeInGame','string',[
'label' => 'Summary time in game',
'template' =>'AdminBundle::get_summary_time_in_game.html.twig'
])
->add('getPercentTasksDone', 'string', [
'label' => 'Percents tasks done',
'template' => 'AdminBundle::get_percent_tasks_done.html.twig'
])
public function getExportFields()
return [
'Name' => 'name',
'Surname' => 'surname',
'Summary time in game' => 'getSummaryTimeInGame',
'Percents tasks done' => 'getPercentTasksDone',
];
.....
问题
字段“getSummaryTimeInGame”和“getPercentTasksDone”在数据网格列表视图中可见,但在导出到 XLS 时,它们是空白的。
如何在 XLS 导出时正确列出这些字段?
【问题讨论】:
getSummaryTimeInGame 和 getPercentTasksDone 都是链接实体上的现有方法? @AirBair 这些方法在链接实体中不存在。这些字段的值的自定义逻辑在树枝模板中(在 $listMapper 中作为参数“模板”给出) 这就是为什么它不起作用!导出操作独立于列表配置。导出字段中的值必须与链接实体中的属性或方法的名称相对应。根据文档:sonata-project.org/bundles/admin/3-x/doc/reference/… @AirBar 那么,如何在导出的字段中包含自定义逻辑值?我想在树枝模板中使用我的服务来获得价值。向实体注入服务不是一个好习惯。 【参考方案1】:在您的用户实体(链接到此管理类的实体)中创建这两个函数。
public function getSummaryTimeInGame
// return the desired calculated value.
public function getPercentTasksDone()
// return the desired calculated value.
在此导出您的工作表后,将在您的文件中获取这些值。
【讨论】:
以上是关于Symfony Sonata Admin Bundle - 将带有树枝模板的自定义字段导出到 XLS的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 3 Sonata Admin 使用注释创建管理员
Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类
Symfony - Sonata Abstract Admin 和 getDoctrine
Symfony 3 上的 Sonata Admin 实体翻译