• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【cakePHP】複数のモデルを使用するページを表示するには。)

【cakePHP】複数のモデルを使用するページの表示方法

このQ&Aのポイント
  • cakePHPを使用して複数のモデルを1つのページに表示する方法について教えてください。
  • cakePHPでは通常1つのモデルにアクセスして、その中で他のモデルを呼び出しますが、複数のモデルを1つのページにまとめて表示する方法が分かりません。
  • MVCの考え方とは異なる部分があり、複数のモデルを1つのページに表示するための適切な方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>例えば毎回表示されるページナビゲーションや、ツリー部分など、 >すべてのページに含まれることになるので、MVCのモデル的にどうなのかと思っています。 どちらにせよ、一度のアクセスにより起動するControllerは一つで、ControllerからModelが呼び出されるので、特段問題ないかとおもいます。 基本的に、Modelは一つのテーブル(またはリレーションしているのであればModelないで複数所持)するものですので、全部のページで使用するテーブルがあるのであれば、全部のControllerに指定すれば良いと想います。 逆にテーブルとは関係ないロジックだけを詰め込む場合は、Model内で var $useTable = false; を指定してやればよいかと。 >あ、AppContrller の事前処理に追加しておけばよいのかもしれませんね。 >テンプレートの方もelementで別だししておけば。。 ページナビゲーションやツリーの表示にデータベースから情報を引っ張るということがないのであれば、 AppController内でbeforeFilterなどに配列なり何なりを追加してやるか、Componentでも作ってやれば良いと想います。

golgo-goo
質問者

お礼

なるほど。 ありがとうございました。 まずは、創り上げてみます。

その他の回答 (1)

回答No.1

class PagesController extends AppController{ var $uses('Post', 'Schedule'); function index(){ $posts = $this->Post->find('all'); $schedules = $this->Schedule->find('all'); $this->set('posts', $posts); $this->set('schedules', $schedules); } } といった感じでいいのではないでしょうか。 CakePHPのマニュアルにもひとつのコントローラで複数のModelを使用する方法は書いてあるはずです。

golgo-goo
質問者

補足

ご回答ありがとうございます。 この方法は、マニュアルにもあり知っているのですが、 例えば毎回表示されるページナビゲーションや、ツリー部分など、 すべてのページに含まれることになるので、MVCのモデル的にどうなのかと思っています。 あ、AppContrller の事前処理に追加しておけばよいのかもしれませんね。 テンプレートの方もelementで別だししておけば。。

関連するQ&A