0

だから私はいくつかのコメントを追加してブログチュートリアルを拡張しようとしています:

Post hasMany Comments

「投稿ビュー」と同じビューにコメント追加フォームを表示したい。物事は私がこのアプローチを取得するための最良の方法を知らないということです。私は3つの方法について考えました:

  • データを処理するためにCommentsControllerで関数を作成します。
  • データを処理するためにPostControllerで関数を作成します。
  • 投稿ビューを処理するのと同じ関数でデータを処理します。

最初の2つの「ソリューション」の主な問題は、無効化されたフィールドをセッション変数に保存してから、beforeFilterコールバックで変数を解析するという厄介なハッキングを行わない限り、検証エラーがフォームに表示されないことです。 :

function beforeFilter () {
    if ($this->Session->check('comment_error')) {
        $this->Post->Comment->validationErrors = $this->Session->read('comment_error');
        $this->Session->delete('comment_error');
    }
}

私が基本的に行うことは、無効化されたフィールドを実際のビューに適合させ、正しく表示できるようにすることです。これは本当にうまくいきますが、私にはとても醜いようです。最善のアプローチは何でしょうか?

別の関連する質問:コントローラーはビューを反映する必要がありますか?つまり、その例では、コメントモデルだけを持ち、コメントを追加するためのフォームであるコントローラー内のすべてのデータを処理することを考えました(Postコントローラー内にある場合でも)。

4

2 に答える 2

0

私はそれを次のように見ています。

  1. すべての投稿の下に、送信するボタンのある「コメントを追加」入力ボックスがあります。
  2. テキストを送信した後、フォームは comments_controller にリダイレクトされ、コメントはこの post_id、本文、作成者、日付などとともに保存されます。
  3. コメントが保存され、すべてのロジックが完了すると、投稿に戻ります。
  4. 各投稿の下には、関連するすべてのコメントが表示されます (同じ post_id が日付などでソートされています)。
于 2011-11-14T16:52:15.457 に答える
0

Mutlivalidatable 動作を探しているようですね: http://bakery.cakephp.org/articles/dardosordi/2008/07/29/multivalidatablebehavior-using-many-validation-rulesets-per-model

これにより、モデルごとに複数の検証ルールセットを定義できます。コントローラを使用して、何かを投稿するときに適用するコントローラを決定します。

PS私はこれをCake 1.3プロジェクトでしか使用したことがありません.2.0で動作するかどうかはわかりません.

于 2011-11-14T13:58:40.523 に答える