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);

+0

OK里面的回调函数!谢谢你的回答!我做到了,我看到了StreamedResponse内容。为此,它是好的,但我不知道为什么csv文件不下载...? – Moh

+0

如果您看到您不知道的内容'有任何错误。也许你在行动中没有回报。你必须返回你的变量'export',但通常如果你不想返回任何东西,Symfony会抛出一个错误,说你必须返回一个响应。 –