Sollte die Validierung in MVC im Controller oder im Modell erfolgen?
怪我咯
怪我咯 2017-05-16 17:06:36
0
3
456

Ich bin Frontend-Entwickler und habe gerade angefangen, über das Backend zu schreiben. Ist es besser, es in das Modell einzufügen und für Aufrufe durch verschiedene Controller unterschiedliche Statuscodes über das Modell zurückzugeben? Teilen wir unsere Erfahrungen. Im Anhang finden Sie zwei verwandte Links:

  • http://stackoverflow.com/questions/5305854/best-place-for-validation-in-model-view-controller-model
  • http://ruby-china.org/topics/4005
怪我咯
怪我咯

走同样的路,发现不同的人生

Antworte allen(3)
巴扎黑

曾经我也有类似的疑惑,其实大家也都说廋controller,胖model,可是为什么廋controller就一定要胖model呢,设计的原则是什么,就是越简单越好,那么胖model不就违背了我们的设计原则么?

所以对于这个问题,我的解决思路是,既然要减肥,那大家都减肥好了,廋controller + 廋model验证层(我称之为model_service) + 廋model,这样的话,即便多个controller复用验证层也不成问题,而model还是基本的增删改查,并且在这个model会更加的灵活,例如常见的问题,一个model引用另个model的增删改查,也可以直接复用

其实分层是一个思想,而不是说分层就一定要按照某个既定的方案死板硬套,那样还不如不分层,既然你已经采用了分层的思想,那么是mvc还是smvc就没有说那个一定好,要看自己怎么考虑自己程序是怎么分层的,说不定你为了方便还搞出了一个xxxmvc分层设计呢,分层分层,切记一定要有能加层的设计考虑。

记得好像网上流行一句话“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”,所以你会看到很多类似的概念:代理、缓存、cgi、工厂模式等等,甚至直接就来一个概念叫“中间层”,所以说当你觉得放在有联系的2个层中随便哪个都好时,你可以想想是不是有一个中间层会更好呢?

给我你的怀抱

按我的rails经验写在model里是比较好的作法

rails中有胖model,瘦controller的说法
rails的例子:

Person model验证 first_name,last_name 字段

class Person
  include ActiveModel::Validations

  attr_accessor :first_name, :last_name

  validates_each :first_name, :last_name do |record, attr, value|
    record.errors.add attr, 'starts with z.' if value.to_s[0] == ?z
  end
end
Ty80

请参考JSR-303 Bean Validation API,另外hibernate-validation的jar库也扩展了验证标准,同样也是写在model里的,使用annotation。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!