Cake PHP 2.x で 読み込む View (ctp ファイル) を指定する方法

この記事を読むのに必要な時間は約 4 分です。


CakePHP では、Controller の Action 名から自動的に読み込まれる ctp ファイルが決定します。当記事では、Action 名と異なる View の ctp ファイルを読み込む方法をご紹介します。

CakePHP 関連記事は、以下よりご覧下さい。

tag : CakePHP


cake-logo

スポンサーリンク
スポンサーリンク

読み込む View (ctp ファイル) を指定する方法

Controller で以下の例のように $this->render( ctp ファイル名 );  で指定します。

以下の例は、PostsController の hoge という Action で、app/View/Posts/fuga.ctp を読み込む場合の記述です。

ポイントとしては、以下の通りです。

  • Controller で render() が 1度も呼ばれない場合は、Action 名を元に autoRender を行います。(いつもの動作)
    • 1度でも render() が呼ばれると、autoRender は行われません。

異なるディレクトリの View を呼び出す場合

通常であれば、Controller 名に基づいたディレクトリ ( 前述の例であれば、app/View/Posts ディレクトリ ) になります。

異なるディレクトリにある View を呼び出す場合は、”ディレクトリ / ctp ファイル名” を指定すれば OK です。

こんな場合に役立つかも

PC 用と、モバイル用 とで、View を分けている場合

必要なデータ・処理は共通ですが、PC 用・モバイル用 それぞれに View を作成して、Controller で User Agent により View を分岐させるような場合、必要になるかと思います。

action は 1つ 固定だが、View は分けたい場合

action は 1つ固定になっているが、コンテキストや受け取るパラメーターによって、View を変えたい場合でしょうか。

具体的な例は思いつきません … 。

ひとこと

特段難しいことはありませんが、ちょっと時間あくと忘れてしまいがちです。

View を rendering するんだ、というイメージを覚えておくと忘れづらくなるかと思います。多分。

[動作確認環境]

  • PHP : 5.6.9
  • CakePHP : 2.6.4
  • MySQL : 5.6.24


今回は以上です。


スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です