MVC模式中的验证层

时间:2009-12-12 21:51:45

标签: php model-view-controller model validation

验证模型将使用的数据的最佳位置在哪里。例如,考虑注册表格。我们有一些来自注册表的数据。那么验证这些数据的最佳位置在哪里。我们应该通过if语句或特殊验证器类检查每个数据,这意味着大量的编码,所以我想知道在哪里做这个。

在控制器中?还是型号?

两个? 因为有些数据应该由其他模型验证吗?

如果您不确定答案,请尝试找出两种方式的可能优缺点。

4 个答案:

答案 0 :(得分:7)

验证数据的来源应该在模型中,而实际检查可能应该在视图级别(可能使用javascript或UI提示)和模型级别完成。纯粹主义者会建议不应该参与这个观点,但我不同意。

答案 1 :(得分:2)

当然不在控制器中,它的唯一任务应该是控制请求/响应并使模型和视图彼此熟悉。在商业模式中做到这一点。没有一堆if语句,只是使用for循环和抽象验证框架。

视图中的验证应该只是为了改善用户体验。在webapps中,视图基本上是HTML页面。因为只有在完全在客户端运行的Javascript才能进行验证。客户端可以完全控制它,例如黑客/禁用它。使用JS验证来改善用户体验(即更快的响应,没有内容闪现)。仍然在服务器端进行(相同)验证以获得更好的稳健性。

答案 2 :(得分:1)

在模型中进行验证可以防止您在一堆控制器中重复验证代码。

答案 3 :(得分:1)

在我看来,应该在模型和视图中进行验证。