cakePHPでのCSVダウンロードプラグインを実装
インストール
composer.jsonに下記のように書いてcomposer updateすればOKです。
1 2 3 |
"require": { "friendsofcake/cakephp-csvview": "~3.0" }, |
プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$data=[ ['山田','太郎','35'], ['鈴木','次郎','40'] ]; //CSVの定義です。なお変数名は任意のものはダメで_headerでないと入りません。 $_header = ['名前','氏名','年齢']; //本データを_serializeに入れます。 $_serialize = 'data'; //これいれないと文字エンコーディング変換が有効になりません $_extension = 'mbstring'; // 変換前の文字コード $_dataEncoding = 'UTF-8'; // 変換後の文字エンコーディング $_csvEncoding = 'sjis-win'; $this->response->download( 'ファイル名' . '.csv'); $this->viewBuilder()->className('CsvView.Csv'); $this->set(compact('data', '_header' '_serialize', '_extension', '_dataEncoding', '_csvEncoding')); |
注意点
- 連想配列でなく、単なる配列を組み込んでいくという点で出力方法がなかなか独特ですね。
- また他の場所で不用意に_serializeを使っているとうまく吐き出されなかったります。
参考
http://andy-carter.com/blog/exporting-data-to-a-downloadable-csv-file-with-cakephp-3-and-csvview
http://qiita.com/shigejun/items/0c2a8110422ffd0e119d
http://qiita.com/okashoi/items/8b9aeb789fd5156064fe