【发布时间】:2017-01-07 20:02:24
【问题描述】:
我正在将验证转移到模型中(watson/validating 包)。但有些验证规则不能移动。例如,考虑用户注册表单。您希望强制密码不少于 6 个字符。你不能在模型中这样做,因为在模型中你有密码的哈希值。
但是,如果您的密码未能通过控制器验证规则,则只会报告来自控制器验证的错误。我显然希望用户看到controller 和model 验证的结果。
【问题讨论】:
-
在什么情况下你需要两者?这个想法对我来说似乎是多余的。
-
@ErikBerkun-Drevnig 我没有描述过吗?通常,您希望在模型中进行验证,而不是在每次创建模型时都重复它。但是模型中不能执行最小长度密码验证,因为模型中有哈希,而不是密码本身。
-
我的意思是,通常您放入模型的数据来自控制器,因此请求验证就足够了。当值本身已经验证时,您会在什么情况下验证模型?
-
就像我说的,不要重复验证规则。例如,您有一个表单来创建具有基本字段集的对象。稍后,用户可以按编辑并更改基本+一些额外的字段。此外,测试模型通常比测试控制器更快/更容易。
-
是的,所以在这种情况下,您可以创建一个表单请求对象 laravel.com/docs/5.3/validation#form-request-validation 并将其用于创建和编辑表单。
标签: php laravel validation