私はカスタムMVCアプリケーション/フレームワークを持っていますが、各アクションはコントローラクラス内の関数です。MVCアプリケーションコントローラで無効なフォームを処理するうまい方法はありますか?
私はsignup
というアクションを持っており、ユーザーの詳細を要求するフォームを表示します。送信時には、データを検証し、ユーザーをデータベースに挿入して成功ページにリダイレクトするか、エラーが発生した元のビュー/フォームを再表示する必要があるアクションをprocessSignup
に送信します。
アクションはいくつかのクエリを実行し、さまざまなデータをビューに渡します。例えば。ユーザーがドロップダウンで選択できる使用可能な国のリストを取得し、以前のフォームで入力した名前に基づいて推奨されるユーザー名のリストを取得し、モデルから他のデータを取得する必要があります。
エラーが発生した場合の私のprocessSignup
アクションで、これらのすべてのクエリとビューのレンダリングを繰り返さないようにする方法を見つけようとしています。これらの状況を処理する標準的な方法は何ですか? signup
アクションは前のフォームからPOST
データを受け取るので、申し込みフォームをGET
とPOST
に基づいて自分自身と支店に送信することはできません。
私は直接signup
関数を呼び出すことができ、それが無効な形式のため、通常の要求とものを区別するためのオプションのパラメータを受信しているが、それはハックようです。他のフレームワークはどのようにこのシナリオを処理しますか?私はPHPを使用していますが、これは言語特有の問題よりも上位の質問です。
独自のスクリプトのみのフレームワークを使用していますか?通常、Zend of Symfonyのようなフレームワークは、フォーム処理のための優れたクラスを持っています。バリデータを使ってデータを実行し、検証エラーが発生すると、エラーメッセージとともに同じフォームが表示されます。 – Dmitri