だから私はいくつかのコメントを追加してブログチュートリアルを拡張しようとしています:
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コントローラー内にある場合でも)。