【PHP】ZendFrameworkで特定のアクションでテンプレートを無効にする

  • 2020年3月19日
  • PHP

需要があるかは分かりませんが…私にはあるので、備忘録としてまとめ。
今回は 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 で特定のアクションでのみテンプレートを無効にする方法でした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG