現在のコントローラーのモデルとの関係が定義されているモデルのコントローラー内でビューを呼び出す方法について、いくつかのガイダンスが必要です。
私の場合、「カタログ」というモデル名があり、これは「アイテム」と呼ばれる別のモデルと HAS_MANY 関係にあります。「カタログ」モデルの「ビュー」ビューで、ユーザーが現在の「カタログ」に「アイテム」を追加できるようにする ajax フォームを表示し、現在の「カタログ」モデルのアイテムをレンダリングしたいと考えています。
理論的には、単一の「アイテム」ビューと作成フォームのレンダリングを担当する個別の「アイテム」コントローラーが必要です。
問題は、私の「カタログ」モデルで定義されたリレーションのおかげで、「カタログ」モデルをロードすると同時にすべてのカタログのアイテムをロードしていることです。しかし、カタログモデル全体を更新せずに現在の「カタログ」の「アイテム」を個別に作成できるようにしたいので、「カタログ」ビューで「アイテム」作成フォームをレンダリングしたいと考えています。また、「カタログ」全体を再度レンダリングすることなく、AJAX で新しく作成された「アイテム」をレンダリングできるように、独立した「アイテム」ビュー アクションが必要です。
「カタログ」「ビュー」ビューで、$catalog->items をループし、それぞれに対して「アイテム」「ビュー」ビューの renderPartial を実行する必要があると考えています。
しかし、特定のコントローラー内で別のコントローラーからのビューを使用することは絶対にできないことを読みました。「アイテム」コントローラーに属する「アイテム」作成フォームをレンダリングする場合も同じですが、「カタログ」「ビュー」ビュー内でレンダリングしたいと考えています。
この場合、例外を設けることは認められますか? これは、「カタログ」「ビュー」ビューで現在行っていることです。
foreach($catalog->items as $item):
$this->renderPartial('/item/_view', array ( 'item' => $item ) , FALSE, FALSE );
従うべきより良いデザインパターンがあれば教えてください。よろしくお願いします。
ロテール