在sonata admin中导出列表视图“按原样”

时间:2017-09-27 15:13:25

标签: symfony listview sonata-admin

在奏鸣曲中,可以将列表视图导出为不同的文件格式,例如excel,pdf或csv ...

此导出基于在后台运行的数据库查询。它不会考虑模板可能在列表视图中操作输出。例如,如果时间戳保存在数据库中,并且此字段是通过

添加的
$listMapper->add('testdate', 'date', ['format' => 'y-m-d'])
列表视图上的

正确显示为“2017-10-01”,但在导出中,此列中有类似“2489489289”...

另一个例子:如果我根据当前对象的不同属性呈现表示状态的自定义列,则状态列将永远不会出现在导出的文件中。

对我来说,一个可能的解决方案可能是覆盖管理控制器并添加自定义回调函数来呈现导出文件手册。

但这是一个大问题:

我必须实现整个逻辑,以便在导出回调函数中以预期的格式显示列。

有没有一种优雅的方法来实现这一目标?我真正想要的是“按原样”导出当前列表视图,而不是基于后台的数据库查询......

由于

1 个答案:

答案 0 :(得分:1)

您可以添加要导出的字段,也可以在Admin类的getExportFields()方法中添加函数并为字段而不是字段getter执行自己的逻辑,阅读更多here

我在管理员中有这样的话:

public function getExportFields()
{
    return array(
        $this->trans('export.createdAt') => 'CreatedAtForExport',
        $this->trans('export.OfferPage') => 'OfferPageNameForExport'
    );
}

在我的实体中我有:

class Entity
{
        public function getCreatedAtForExport()
        {
            return $this->createdAt->format('d.m.Y H:i');
        }

        public function getOfferPageNameForExport()
        {
            return $this->isOfferPage ? 'OfferPage' : 'CalcPage';
        }
}