2009-06-25 10 views
1

質問のタイトルを許してください。一貫した何かを書くことを試みるのに20分を費やした(成功すれば疑わしい)。Cakephp:コントローラーアクションでhasMany/belongsTo関係を維持する

とにかく、一例としてブログを使用して、私たちのモデルは次のようになります。

ポストhasManyのコメント コメントbelongsToのポスト

のは、私は新しいコメントを追加したいとしましょう:コメントを保存するとき、I saveを呼び出す前に、データ配列内の親Post(Post.id)に外部キーを含める必要があります。

私は、ユーザーにコンテキストで関係を維持したいので - 私は彼らがして、コメントを関連付けるために選択フィールドからのポストを選択する必要がありますする必要はありません - ここで私が見る2つのオプションがあります:

1)コメントのフォームを投稿のビューに配置します。

2)投稿IDを引数として(GET経由で)Comment.addアクションに渡します(または、セッションに書き込み/読み込みを行います)。保存し、 親Post.viewにリダイレクトします。

オプション1はブログには適していますが、ユーザーのプロフィールには適していません。ユーザーのプロフィールにはあま​​りにも長すぎる形式の があります。

オプション2を使用していますが、特定のポスト固有の表示/リダイレクト条件を Comments.addアクションに書き込む必要があります。私が読んだことから、私は はコントローラ とモデルの間に1対1の関係を維持しようとしているはずです。

#2はWeb MVCのベストプラクティスとして受け入れられますか?または私は見落としている別のオプションがありますか?

答えて

1

私はしばしば一緒にやりました。私は、あなたがそれを他の場所に置いておきたい場合は、要素を使っているかもしれませんが、投稿のビューにフォームを入れましたが、コントローラの追加アクション(この場合はコメント)に提出して投稿のID。ちょうどメモ - 非公開の投稿などを実装する必要がある場合は、Commentsコントローラの追加アクションにチェックが入っていることを確認することをお勧めします。

0

どちらのオプションもわかりやすいようです。

  1. フォームが長すぎる場合は、部分的な見方をしてください。
  2. 複数のコントローラでモデルを使用しても問題は発生しません。もちろん、すべてのモデルをすべてのコントローラで使用するべきではありませんが、両方のモデルが必要な場合は、どうしてですか?
関連する問題