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

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


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

 

[pn-box color=”lgray”]

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

tag : CakePHP

[pn-box-close]


cake-logo

 

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

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

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

public function hoge(){
  ... 処理 ...
  $this->render("fuga"); // .ctp は付けない
}

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

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

 

 

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

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

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

public function hoge(){
  ... 処理 ...
  $this->render("/Piyo/fuga"); // app/View/Piyo/fuga.ctp が呼び出される
}

 

こんな場合に役立つかも

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

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

 

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

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

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

 

[pn-box color=”lgray”]

公式ドキュメントへのリンク

CakePHP Cookbook 2.x > コントローラ > 指定したビューを描画する

[pn-box-close]

 

 

ひとこと

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

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

 

[pn-cakephp-env]

今回は以上です。


[pn-amzn-cakephp]

コメントする

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