2017-10-08 12 views
0

symfony 프로젝트에서 CSV 내보내기를 시도하고 함수가 간단한 응답을 반환하고 CSV를 다운로드하지 않기 때문에 무언가 잘못되었다고 생각합니다. 여기 왜 csv 내보내기가 작동하지 않습니까?

함수입니다 : $response->setCallback() :

public function exportCsv($customers) 
{ 

    $fileName = "export_" . date("d_m_Y") . ".csv"; 
    $response = new StreamedResponse(); 

     $handle = fopen('php://output', 'w+'); 

     fputcsv($handle, array('Name', 
      'Adress', 
      'City', 
      'Code' 
     ), ';'); 


     foreach ($customers as $index => $custom) 
     { 

      fputcsv($handle,array(
       $custom->getName(), 
       $custom->getAdress(), 
       $custom->getCity(), 
       $client->getCode(), 
      ),';'); 
     } 

     fclose($handle); 

    $response->setStatusCode(200); 
    $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); 
    $response->headers->set('Content-Disposition','attachment; filename='.$fileName); 

    return $response; 

} 

답변

0

스트림 응답 객체를 생성 한 후, 당신은 내용과 응답 객체를 작성합니다 콜백 함수를 추가 할 필요가 있었다.

public function exportCsv($customers) 
{ 

    $fileName = "export_" . date("d_m_Y") . ".csv"; 
    $response = new StreamedResponse(); 


    $response->setCallback(function() { 
     $handle = fopen('php://output', 'w+'); 

     fputcsv($handle, array('Name', 'Adress', 'City', 'Code'),';'); 

     foreach ($customers as $index => $custom) 
     { 

      fputcsv($handle,array(
       $custom->getName(), 
       $custom->getAdress(), 
       $custom->getCity(), 
       $client->getCode(), 
     ),';'); 
     } 

     fclose($handle); 
    }); 

    $response->setStatusCode(200); 
    $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); 
    $response->headers->set('Content-Disposition','attachment; 
    filename='.$fileName); 

    return $response; 

} 
+0

답변 주셔서 감사합니다!! 하지만 작동하지 않습니다 .. 나는이 줄을 추가합니다 : $ response-> setCallback (function() use ($ customers) {}); 그리고 지금은 아무 반응이 ... 어떤 아이디어 ?? 어쩌면 나는 헤더를 잊었다 ??? – Moh

+0

아무 생각 없나요 ?? 제발 ... 도와주세요 !!! – Moh