ホームページ  >  に質問  >  本文

MVC では、検証をコントローラーまたはモデルに配置する必要がありますか?

私はフロントエンドの人間ですが、バックエンドについて書き始めたところです。この質問は非常にわかりにくいです。それをモデルに入れて、さまざまなコントローラーによる呼び出しに対してモデルを通じてさまざまなステータス コードを返す方がよいでしょうか?私たちの経験を共有しましょう。 2 つの関連リンクを添付します:

怪我咯怪我咯2713日前461

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑2017-05-16 17:08:36

    私もかつて同じような疑問を持っていましたが、薄いコントローラーは太いモデルである必要があるのはなぜですか? シンプルであればあるほど良いというわけではありません。太いモデルは設計原則に違反していませんか?

    この問題に対する私の解決策は、体重を減らしたいので、全員が体重を減らし、シンコントローラー + シンモデル検証レイヤー (model_service と呼びます) + シンモデルです。この場合、複数のコントローラーが再利用されている場合でも、検証層は問題なく、モデルは依然として基本的な追加、削除、変更、およびチェックですが、このモデルはより柔軟になります。たとえば、よくある問題は、1 つのモデルが追加、削除、変更、およびチェックを参照することです。別のモデルをチェックし、直接再利用することもできます

    実際、階層化はアイデアであり、階層化が特定の計画に従わなければならないという意味ではありません。その場合、階層化のアイデアを採用しているため、階層化するかどうかは問題ではありません。 mvc と smvc のどちらが優れているかは、プログラムの階層化をどのように考えるかによって決まります。便宜上、xxxmvc 階層化設計を思いついたかもしれませんが、レイヤーを追加する場合には設計上の考慮事項があることを覚えておいてください。 。

    インターネット上では「コンピュータ サイエンスの分野におけるあらゆる問題は、間接的な中間層を追加することで解決できる」というよく言われた言葉があるようです。プロキシ、キャッシュ、CGI、ファクトリーなど、似たような概念がたくさん出てくるでしょう。 「中間層」という概念もあるので、関連する2つの層のどちらに入れても良いと考えたときに、中間層があったほうが良いのではないか?

    返事
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:08:36

    私のRails経験によると、モデルに書いた方が良いです

    レールには太いモデルと薄いコントローラーについての格言があります
    レールの例:

    個人モデルはfirst_name、last_nameフィールドを検証します

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-05-16 17:08:36

    JSR-303 Bean Validation API を参照してください。さらに、hibernate-validation jar ライブラリも検証標準を拡張します。これもモデルに記述され、アノテーションが使用されます。

    返事
    0
  • キャンセル返事