在 sonata admin 中导出列表视图 "as is"

Exporting list view "as is" in sonata admin

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

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

添加此字段
$listMapper->add('testdate', 'date', ['format' => 'y-m-d'])

在列表视图中,它正确显示为“2017-10-01”,但在导出中,此列中有类似“2489489289”的内容...

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

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

但这里有一个大问题:

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

有什么优雅的方法可以做到这一点吗?我真正想要的是当前列表视图的导出 "as it is" 而不是基于后台的数据库查询...

谢谢

您可以添加要导出的字段,或者您可以添加函数并为字段执行您自己的逻辑,而不是在管理员 class 的 getExportFields() 方法中执行字段获取器,阅读更多内容 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';
        }
}