我知道这样做的CI方法是验证控制器中的规则,但我认为这不是最终的方法。您建议我遵循CI方式或验证模型中的传入数据,因此我的模型将始终保护自己免受不良数据的影响。我对MVC的理解是控制器不必保留任何程序逻辑,所有逻辑都在模型中实现。如果你能详细解释为什么两种方法都是好的而不是推荐哪种方法,我将不胜感激?
干杯
答案 0 :(得分:6)
没有银弹。
模型中的验证可以保护您免受程序失效的编程。但是,用户无法直接访问您的模型,只能通过控制器并最终通过表单访问。大多数情况下,您需要额外的验证,这些验证特定于某个表单或某个控制器,并且在模型中是不合适的。
这支持在模型之外进行一层验证。理想情况下,您可以创建一个单独的验证对象(可能绑定到特定的表单),由控制器使用。有时您可能需要在控制器本身进行额外的验证。
验证不是二进制的。在不同的上下文中,有许多层验证和不同类型的验证。您可能需要在模型和控制器中进行验证。