【发布时间】:2020-11-03 16:45:52
【问题描述】:
我正在尝试使用 symfony 4 下载 csv 文件。 我阅读了文档。 我知道我必须规范化我的对象并在 csv 中编码。
我的控制器:
/**
* @Route("/export.csv", name="exportcsv", options={"expose"=true}, methods={"GET","POST"})
*
**/
public function exportcsv(){
$sessionuser = $this->session->get('user');
$user = $this->finduser($sessionuser);
$datas = $this->getDoctrine()->getRepository(Object::class)-> findBy(['Event'=> $user->getEvent()]);
$encoders = [new CsvEncoder()];
$normalizers = array(new ObjectNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$csvContent = $serializer->serialize($datas, 'csv');
return new Response($csvContent);
}
当我尝试走这条路时,我可以在我的浏览器中看到我所有的数据都是 csv 格式的。 例如,我有:
NameColumn1、NameColumn2、NameColumn3
Data1Column1、Data1Column2、Data1Column3
Data2Column1、Data2Column2、Data2Column3
我读到这是创建 csv 文件的好格式。
我想知道我要生成 csv 文件。
如果有人有解决方案,那就太棒了。我坚持了一个星期,我完全迷失了。
谢谢。
编辑:顺便说一下,我尝试了这个解决方案How to force download a .csv file in Symfony 2, using Response object? 它下载一个文件,但它是空的。
【问题讨论】:
-
我尝试了这两种解决方案。我看到一个文件正在下载,但它是空的。
-
$user->getEvent() 不会抛出错误吗?似乎 $user 在这里会为空。
-
@CHE6yp 我没有放所有代码,但它确实 $user 是之前定义的。我将编辑我的问题。