Far*_*ina 1 csv zend-framework2
我有一个模型,返回带有ID,名称,价格等的汽车数据.所以我有一个汽车控制器和一个从模型中获取此数据的csv动作:
$carTable = $this->getServiceLocator()->get('Application\Model\DbTable\Cars');
$cars = $carTable->fetchAll();
Run Code Online (Sandbox Code Playgroud)
我需要将此"$ cars"数据下载为CSV文件,以便用户将其存储在磁盘上.
我试图禁用布局并回显CSV字符串并设置"内容类型"和其他标题,但它没有开箱即用.然后我发现我应该创建一个自定义的CsvRenderer并在配置中注册它.
由于我在ZF2网站或博客和Stackoverflow答案中找不到任何关于此的文档,我想知道这是否是在ZF2中将数据下载为CSV的推荐通用方法?还是有一个我不知道的更简单的解决方案?
谢谢
Rob*_*len 11
一种解决方案是直接从控制器返回Response对象.
这样的事情有很好的工作机会:
public function downloadAction()
{
// magically create $content as a string containing CSV data
$response = $this->getResponse();
$headers = $response->getHeaders();
$headers->addHeaderLine('Content-Type', 'text/csv');
$headers->addHeaderLine('Content-Disposition', "attachment; filename=\"my_filen.csv\"");
$headers->addHeaderLine('Accept-Ranges', 'bytes');
$headers->addHeaderLine('Content-Length', strlen($content));
$response->setContent($content);
return $response;
}
Run Code Online (Sandbox Code Playgroud)
(请注意,我没有测试过这段代码,但是根据评论进行了更新!)