0

Cakephp [2.2]で私はすべてを焼きました、そして私の「人々」の見方は関係と電話とアドレスと他の関連データで非常に忙しいです。焼き付けられたレイアウトではありませんが、すべての情報をピープルビューに表示したいと思います。

  1. 関連データのこれらの部分をどのように処理する必要がありますか?要素を使用するのか、拡張ビューやプラグインを使用するのか、それとも何を使用するのかわからないのですが、これは少し新しいので、いつ使用すべきか(私のレベルでは)ドキュメントが明確ではありませんでした。焼き付けられたコードはモノリシックなアプローチのように見えたので、そこを探すのにあまり助けがありませんでした。
  2. ユーザーが個人ビューのリストから電話番号を編集することを選択すると(たとえば)、電話編集ビューに移動し、次に、ユーザーが表示されていた個人ビューではなく、電話リスト(インデックスビュー)に戻ります。 。代わりに、それらを人物ビューに戻すにはどうすればよいですか?
  3. 彼らが提供するブログの例は素晴らしいですが、さまざまな機能のベストプラクティスを示すcakephpの「リファレンス」アプリケーションはどこかにありますか?1つ、または単なるアプリの例以上のものを見つけることができませんでした。

ありがとう、私はガイダンスに感謝します。

4

1 に答える 1

1

これはかなり広い質問ですが、私はそれに答えようとします。あなたがプログラミングの知識をどれだけ進歩させているかはわかりません。あなたがすでに知っていることを再ハッシュする場合は、ご容赦ください。まず、この記事は、フレームワークを初めて使用し始めたときに非常に役立ちました。どのコードをどこに、なぜ配置する必要があるかを説明しているからです。これは、私が見た中で「参照アプリケーション」に最も近いものであり、実際には優れた学習ツールになります。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));
于 2012-11-13T10:13:44.653 に答える