アクションメソッドで自動レンダリングを無効にする2007年08月21日 17時32分54秒

単発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データを直接出力
	}
}

いや、わざわざ記事にしなくてもいいんだけど、マニュアルのどこに書いてあったかすぐ忘れちゃうもんで...

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2007/08/21/1741773/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。