2017-02-28 85 views
0

我想基於通過API提取信息,生成CSV文件。在添加StreamedResponse之前,我只能看到CSV輸出echo'd。一旦添加了StreamedResponse,我收到一個ERR_INVALID_RESPONSE。ERR_INVALID_RESPONSE上StreamedResponse symfony3

我使用Symfony3,但我是比較新的了。我不知道爲什麼StreamedResponse導致err_invalid_response。

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

    fputcsv($handle, $fieldNames,','); 

    $data = $elq->get($query); //query is created before the callback function, as it's reused. 

    foreach ($data->elements as $record) { 
     $recordData = []; 
     /* Parsing data from API into $recordData */ 
     fputcsv($handle,$recordData,","); 
    } 

    fclose($handle); 
} 
return new StreamedResponse($callback, 200, array(
    'Content-Type' => 'text/csv; charset=utf-8', 
    'Content-Disposition' => 'attachment; filename="'.date("Ymd_His").'_'.ucfirst($settings->getType()).'_export.csv"' 
)); 

回答

1

這似乎是一個簡單的變量範圍問題。在您的回調函數中,有未知的變量($ fieldNames,$ elq,$ query)。

我認爲你可以做這樣的事情:

$callback = function() use($fieldNames, $elq, $query) { 
    // your code 
}; 
+0

覺得有點傻,雖然缺少的:)謝謝! – Wizarduss

+0

heh yep,可變範圍也造成了我的這一點。看起來在流式響應中,您無法獲得通常出色的Symfony錯誤視圖,但是如果您通過Symfony概要分析器查看它,仍然會記錄您的響應。 (也是例外。) – Adambean