6
|
Stephen Melrose · 技术社区 · 15 年前 |
![]() |
1
6
我不同意“验证应该是域逻辑的一部分,而不是前端逻辑”。 验证是应用程序的一个复杂功能部分,并且 必须 注意上下文。例如,您必须知道用户是否登录,她拥有何种凭证,请求/表单的状态等等。取而代之的是模型 必须 与上下文无关(在任何环境中工作,不仅是HTTP请求,还包括CLI等),因此他们不了解用户、状态和HTTP请求。这是对模型类的可测试性的强烈要求。 为了总结原因,功能验证 必须 属于知道应用程序状态的表单(即会话)。symfony确实对属于表单组件的sfvalidator*类有很大帮助。这就是为什么表格要用 功能性 测试。 数据验证应该在模型中进行(例如,检查该值是整数还是字符串,检查它是否为空等等)。这很容易通过模式验证规则中的条令实现。 |
![]() |
2
3
我不能专门和symfony说话,但我知道我有意避开zend框架的表单验证,而是在我的模型上进行验证(zend框架不提供自己的模型组件,因此它对此事没有实际的意见)。 在表单上验证没有错,但我认为您还应该在模型上验证。在表单上验证可能对快速和简单的输入检查很有用,尤其是在处理逻辑复杂的情况下——您不会浪费时间处理明显不好的数据。 我认为模型验证最好的原因是:
如果您没有完全出售,只在模型中验证,这两种方法的组合听起来是一个很好的解决方案。 编辑: 在一天结束的时候,在这个问题上使用您的框架可能是最有意义的。如果symfony在控制器中似乎最倾向于验证,并且在模型中不提供简单的验证路径,那么只需按照他们希望您做的(或symfony社区倾向的方向)进行即可。与你的框架作斗争从来都不是一件有趣的事。 |
![]() |
3
0
对于symfony部分,我无能为力,但大多数MVC框架都在模型中进行验证,因为这是MVC环境中唯一需要验证的地方。
|
![]() |
4
0
我认为你应该使用MVC验证工具ket来使用别人依赖于modelstate它的easyer和testable,它的基础是formcollected,而不是给你自由运行方式的模型。 马万哈菲兹 |