私はCodeIgniterを使用してWebアプリケーションのほとんどを開発していますが、このデータをモデルに送信する前に、組み込みのフォーム検証クラスを使用してコントローラ内のフォームデータを検証する方法例えば、データをデータベースに挿入することができます。MVCアーキテクチャでのデータとフォームの検証
しかし、私は「スキニーコントローラ、太いモデル」のラインを聞いています。これらの検証チェックをモデルの中に入れなければならないのだろうかと思います。
私はこのアプローチを使用すると3つのことがわかります。
これらのモデル関数から一見醜い配列やオブジェクトを返すことなく、さまざまなエラーメッセージをユーザーに表示する方法を教えてください。例:アカウントのサインアップ時に重複したメール。モデル内のユーザーを追加するメソッドは、挿入が成功したかどうかを示す配列またはオブジェクトとエラーメッセージを返す必要がありますか?
モデルの妥当性チェックを行い、POSTデータではなくコントローラからメソッドに渡された変数をチェックすることで、プロジェクトで非常に役立つクラスであるForm Validationクラスの使用を失います。フォームバリデーションクラスを模倣するためにCIライブラリのように使用できるクラスやライブラリを記述することをお勧めしますか?
この問題に続き、モデルに渡される前にPOSTデータの存在を検証する必要があるため()、残りの検証はコントローラに配置するだけではありませんか?
ご意見、ご意見、ご感想ありがとうございます。
ニースの答え、+1。 –
あなたの非常に詳細な応答をお寄せいただきありがとうございます - 私はいくつかのリンクを読みました。したがって、モデルのメソッド内で検証し、データオブジェクトまたはエラーを記述/表すオブジェクトのいずれかを返すアプローチがあると示唆していますか? idが指定されている場合、エラーメッセージとステータスコードを持つオブジェクトを返さない場合 は、例えば、ユーザレコードを取得するための方法で は、、、など あなたが扱うだろうか、これをユーザーのオブジェクトを返しますコントローラーで? – Sam
@Sam、もしあなたがActiveRecordオブジェクトを使いたいのであれば、それを内部に持っていなければなりません。バリデーターをオブジェクトに渡し、その後、同じ時点でフィールドのセットに対して検証を実行する、ある種のセッターを作成する必要があります。そして、エラーが発生した場合、例外をスローすることができます。例外はコントローラで処理されます(実際にはCIでは「プレゼンタ」レベルです)。 –