単発TIPS。つか備忘メモですな。
Zend_Controller_*でのMVCを使っていて、あるアクションコントローラのアクションメソッドのみViewRendererヘルパーの自動レンダリングを使用しない場合は、ViewRenderer->setNoRender() を使う。
以下、適当な例。downloadActionはブラウザにCSVファイルをダウンロードさせるって感じ。
class HogeController extends Zend_Controller_Action { public function indexAction() { // ほっとくと勝手にViewRendererが関連付けられた // ビュースクリプトでレンダリングする } public function downloadAction() { // 自動レンダリングを無効にする $this->_helper->viewRenderer->setNoRender(); // レスポンスヘッダをセット // ほんとは$this->getResponse()->setHeader()を使うんだろうけど // コード未検証なのでheader()を使ってみる。 header( 'Content-Disposition: inline;filename=hoge.csv' ); // 別にapplication/octet-streamじゃなくてもいいか。 header( 'Content-Type: application/octet-stream' ); // あとはecho なんかでCSVデータを直接出力 } }
いや、わざわざ記事にしなくてもいいんだけど、マニュアルのどこに書いてあったかすぐ忘れちゃうもんで...
セコメントをする