在CodeIgniter中验证数据控制器或模型的位置

时间:2012-03-16 23:56:55

标签: php model-view-controller codeigniter validation

我知道这样做的CI方法是验证控制器中的规则,但我认为这不是最终的方法。您建议我遵循CI方式或验证模型中的传入数据,因此我的模型将始终保护自己免受不良数据的影响。我对MVC的理解是控制器不必保留任何程序逻辑,所有逻辑都在模型中实现。如果你能详细解释为什么两种方法都是好的而不是推荐哪种方法,我将不胜感激?

干杯

1 个答案:

答案 0 :(得分:6)

没有银弹。

模型中的验证可以保护您免受程序失效的编程。但是,用户无法直接访问您的模型,只能通过控制器并最终通过表单访问。大多数情况下,您需要额外的验证,这些验证特定于某个表单或某个控制器,并且在模型中是不合适的。

这支持在模型之外进行一层验证。理想情况下,您可以创建一个单独的验证对象(可能绑定到特定的表单),由控制器使用。有时您可能需要在控制器本身进行额外的验证。

验证不是二进制的。在不同的上下文中,有许多层验证和不同类型的验证。您可能需要在模型和控制器中进行验证。