MVC模式中的验证层

Ogu*_*gic 5 php validation model-view-controller model

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

在控制器?还是型号?

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

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

sti*_*mms 7

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


Bal*_*usC 2

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

视图中的验证只能用于改善用户体验。在 web 应用程序中,视图基本上是 HTML 页面。在这种情况下,验证只能使用完全在客户端运行的 Javascript 进行。客户端可以完全控制它,例如破解/禁用它。使用JS验证只是为了改善用户体验(即更快的响应,没有内容闪现)。仍然在服务器端进行(相同的)验证以获得更好的鲁棒性。