ユーザーがレポート出力として選択したものに応じて、その場で CSV ファイルを生成しようとしています。データの取得と CakeResponse を使用したファイルへの書き込みは完了しましたが、ファイル拡張子を「.csv」に設定するのに苦労しています。ファイルは通常のテキスト ファイルとしてダウンロードされます。CakePHP のドキュメントでは、これを行うことを提案しています。
$this->response->type('csv');
..しかし、これでも機能しません。まだテキスト ファイルを取得しています。誰でも光を当てることができますか?CSV ファイルを生成する新しい方法を探しているわけではありません。拡張子を変更したいだけです。ありがとうございました。
これは私がファイルをダウンロードする方法です:
$this->response->body($this->constructFileBody($logs));
return $this->response;
これはメソッド「constructFileBody」ですが、この質問の範囲を超えていると思います:
public function constructFileBody($logs = array()){
$content = "";
for($i = 0; $i < count($logs); $i++){
$row = $logs[$i]['EventLog'];
$line = $row['description'] . "," . $row['user'] . "," . $row['affected_user'] . "," . $row['report_title'] . "," . $row['date_created'] . "\n";
$content = $content . $line;
}
return $content;
}