これはかなり広い質問ですが、私はそれに答えようとします。あなたがプログラミングの知識をどれだけ進歩させているかはわかりません。あなたがすでに知っていることを再ハッシュする場合は、ご容赦ください。まず、この記事は、フレームワークを初めて使用し始めたときに非常に役立ちました。どのコードをどこに、なぜ配置する必要があるかを説明しているからです。これは、私が見た中で「参照アプリケーション」に最も近いものであり、実際には優れた学習ツールになります。Croogo(CakeベースのCMS)など、注目度の高いCakeアプリケーションのいくつかを試してみることができます。しかし、コードベースは少し複雑になるはずです。
個人的には、実際にさまざまなビューで要素を再利用したい場合に要素を使用します。ただし、問題は要素にデータを供給することです。と呼ばれる方法がありますrequestAction
が、マニュアルでさえ、これは適度に、そしてキャッシングと組み合わせて使用されるべきであると述べています。問題は、さまざまな要素で多くの呼び出しを使用すると、コントローラーにメソッドが散らばり、 「スキニーコントローラー、ファットモデル」のマントラにrequestAction
準拠しないことです。
関連するデータ呼び出しのほとんどをそれぞれのモデルに配置し、コントローラーからそれらのモデルメソッドを呼び出して、ビューにフィードします。したがって、最新の10個のPhoneNumberと関連するユーザーが必要だとします。
PhoneNumberモデルには、ユーザーとその電話番号の配列を返すメソッドがあります。Containable動作を使用して、返される関連モデルの数を制限します。以下のコードは例であるため、実際の実装は異なる場合があります。
public function getRecentPhoneNumbers($limit=10) {
$phoneNumbers = array();
$phoneNumbers = $this->find('all', array(
'limit' => $limit,
'contain' => array('User'),
'order' => 'PhoneNumber.id DESC'
));
return $phoneNumbers;
}
getRecentPhoneNumbers()
PhoneNumberとUserモデルが適切に関連付けられている場合は、Userモデルから呼び出すことができます。
$this->PhoneNumber->getRecentPhoneNumbers(10)
またはユーザーコントローラーから:
$this->User->PhoneNumber->getRecentPhoneNumbers(10)
これらの10個の数値のリストを表示する要素があり、それがと呼ばれる変数を受け入れるとします。次に、呼び出し$recentPhonenumbers
から返された配列を使用して、関連するUsersControllerメソッドに変数を設定します。getRecentPhoneNumbers
$this->set('recentPhonenumbers', $this->User->PhoneNumber->getRecentPhoneNumbers(10));
これにより、要素を含むビューで使用できるようになります。
拡張ビューは比較的新しく(Cake 2.1以降)、私はそれらを使用していませんが、条件付きマークアップを作成するための優れた方法のようです。
2番目の質問については、ユーザーをインデックスビューではなく個人ビューにリダイレクトします。これは、コントローラーのメソッドでリダイレクトを調整する問題です(詳細についてはマニュアルを参照してください) 。edit()
標準のベイク処理されたedit()メソッドは、$id
これを使用してにリダイレクトできるパラメーターを受け入れますview()
(おそらくパラメーターも受け入れます$id
)。
したがって、リダイレクトはおそらく次のようになります。
$this->redirect(array('controller' => 'users', 'action' => 'index'));
次のように変更します。
$this->redirect(array('controller' => 'users', 'action' => 'view', $id));