単発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データを直接出力
}
}
いや、わざわざ記事にしなくてもいいんだけど、マニュアルのどこに書いてあったかすぐ忘れちゃうもんで...
セコメントをする