8

私はコハナを使用していますが、この質問はより一般的だと思います。

コントローラーでフォームの検証を行ってきましたが、これまでのところうまくいきました。しかし、最近、私は問題に遭遇しました。

コメント モデルがあり、いくつかの異なるコントローラーからコメントを送信します。すべてのコントローラーにバリデーターを配置する代わりに、モデルに配置しました。

これは素晴らしいので

  • 検証ルールを変更/追加する場所は 1 か所のみ (DRY)

これは最悪だから

  • コントローラーに成功または失敗を返す必要があることは明らかで、Kohana の検証ライブラリはエラーを配列として返します。だから私のリターンはこのようになります

成功について

array('success' => true);

失敗した場合

array('success' => false, $errors);

これは間違っていると思わざるを得ません。それは間違っていると感じます。

コントローラーでそれを行うと、簡単に行うことができます

if ($post->validate()) {
     doWhatever();
} else {
     $this->template->formErrors = $post->errors('form_errors');
}

どちらが良いようです(私には)。

これを行うより良い方法はありますか?コントローラーまたはメソッドで検証する必要がありますか? 私は夢中になっていますか?

4

6 に答える 6

4

正直なところ、アレックス、あなたの方法に問題はないと思います。きちんとやっているようです。あなたはDRYの原則に従っています。これは、MVCに関して私が何かを正しく行っているかどうかを測定するための尺度です。

于 2009-10-08T03:00:28.723 に答える
2

脂肪モデル。小さなコントローラー。それは私がいつもやっていた方法です。私にとっての検証はデータレイヤーで行われます。データレイヤー(少なくとも私にとっては)はモデルです。私は通常、MVCフレームワークとしてCakePHPを使用しています...多分それが私の検証がモデルで行われている理由です。それはCakePHPのやり方です。

于 2009-10-08T03:50:58.700 に答える
0

私は感情を繰り返したくないので、方法を実行します。さらに、必要に応じて配列のエラーをビューに表示できるため、配列は便利です。私はkohanaを使用していませんが、ASP.NET MVCで使用している検証方法で同様のリストが提供され、ユーザーに正確に何が間違っているかを示すことができます。

于 2009-10-08T02:58:38.097 に答える
0

常に (可能であれば) クライアント (JS) で検証する必要があります。そして、それはバイパスできるため、サーバーでも検証します。はい、検証を再利用可能なフォームに入れることは素晴らしいアイデアです

于 2009-10-08T03:22:59.013 に答える
0

私もモデルで検証を行います。ORM、Auto_Modeler などのほとんどのモデリング ライブラリも検証をサポートしています。ところで、FreeNode (irc.freenode.net) の #kohana チャンネルで質問した方が早いです。私たちは(通常)噛みません:)

于 2009-10-18T18:10:43.473 に答える