需要があるかは分かりませんが…私にはあるので、備忘録としてまとめ。
今回は PHP のフレームワーク Zend Framework
で特定のアクションでのみテンプレートを無効にする方法です。
たとえば、ここのアクションでは JSON だけを返すようにしたいとか、もしくは指定した場所に置いたテンプレートファイルを使いたいから、デフォルトのテンプレートは無効にしたいとかの場合に使用します。
今回参考にさせていただいた記事はこちらから。
Manual – Documentation – Zend Framework
https://framework.zend.com/manual/1.10/ja/zend.controller.action.html
さてその方法ですが、テンプレートを無効にしたいアクションの最初で下記のコードを追加するだけです。
// 指定したアクションのテンプレートを無効にする $this->_helper->viewRenderer->setNoRender(true);
たったこれだけなのですが…毎回この記述を忘れて調べる羽目になります…。
この書き方、どうしてもちょっと覚えにくいんですよね。
なお、こちらの処理は別の書き方をすることもできます。
// 記述その2 $front = Zend_Controller_Front::getInstance(); $front->setParam("noViewRenderer", true); // 記述その3 $this->_helper->layout->disableLayout();
2 については動作確認済みですが、3 については未確認です。
が、個人的には 1行で書けるなら 1行で済ませたいので、1 か 3 をおすすめします。
また、特定のアクションのみではなく、そのコントローラ全体で、テンプレートを無効にする記述もあります。
// コントローラ全体でテンプレートを無効にする $this->_helper->removeHelper('viewRenderer');
今のところ使ったことはないのですが、いざと言うときのためにこちらも覚えておきたいと思います。
以上、Zend Framework で特定のアクションでのみテンプレートを無効にする方法でした。
ご参考になれば幸いです。