csv导出不与symfony 3一起工作
问题描述:
我尝试在我的symfony项目上做一个csv导出,我认为有什么错误,因为没有任何反应,我没有错误......?csv导出不与symfony 3一起工作
public function exportCsv($customers)
{
$fileName = "export_" . date("d_m_Y") . ".csv";
$response = new StreamedResponse();
$response->setCallback(function() use ($customers){
$handle = fopen('php://output', 'w+');
// Nom des colonnes du CSV
fputcsv($handle, array('Name',
'Adress',
'City',
'Code'
), ';');
//Champs
foreach ($customers as $index => $customer)
{
//dump($client);die();
fputcsv($handle,array(
$customer->getName(),
$customer->getAdress(),
$customer->getCity(),
$customer->getCode(),
),';');
}
fclose($handle);
});
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'text/csv; charset=utf-8', 'application/force-download');
$response->headers->set('Content-Disposition','attachment; filename='.$fileName);
return $response;
}
我调用这个函数在我CONTROLER这样的:
if (isset($_POST['export']))
{
$export = $exp->exportCsv($customers);
}
你有什么想法,请???
答
如果您想查看流式响应中发生了什么以及错误是什么,您只需在响应之外调用回调函数即可。
$callback = function() use ($customers){
$handle = fopen('php://output', 'w+');
// Nom des colonnes du CSV
fputcsv($handle, array('Name',
'Adress',
'City',
'Code'
), ';');
//Champs
foreach ($customers as $index => $customer)
{
//dump($client);die();
fputcsv($handle,array(
$customer->getName(),
$customer->getAdress(),
$customer->getCity(),
$customer->getCode(),
),';');
}
fclose($handle);
};
$callback();exit;
及后只删除最后一行,并插入StreamedResponse对象$response->setCallback($callback);
OK里面的回调函数!谢谢你的回答!我做到了,我看到了StreamedResponse内容。为此,它是好的,但我不知道为什么csv文件不下载...? – Moh
如果您看到您不知道的内容'有任何错误。也许你在行动中没有回报。你必须返回你的变量'export',但通常如果你不想返回任何东西,Symfony会抛出一个错误,说你必须返回一个响应。 –