在laravel中,为了验证用户的一些输入,我们可以使用Validator Class。
例如,通过电子邮件注册,验证规则可以是:
array( 'email' => 'required|email|unique:users,email' )
其中说,电子邮件是必需的,电子邮件应采用电子邮件格式,并且之前不应在表users
中注册。 (应该是唯一的)
那么,这是如何工作的?
是否使用 short-circuit ?如果我们一步一步走
required
设置
如果通过,跳转到下一个规则users
我问了一个人,他说,检查一切,完成所有规则
如果未通过required
规则,则没有理由检查输入是否为电子邮件格式
如果它不是电子邮件格式,则无需检查数据库。
有谁知道它是如何工作的?
答案 0 :(得分:4)
这取决于规则。实际上,如果required
属性失败,Laravel将停止处理其他规则。但是,如果required
通过,它将继续验证其他规则。
这意味着您可以在同一个字段上收到多个验证错误。
答案 1 :(得分:2)
我找不到Laravel 4的详细信息,但Laravel 5.4 documentation表示所有验证规则都按顺序运行而没有进行短路评估。
在Laravel 5中,您可以通过添加“保释”前缀来强制进行短路评估。验证规则。
$this->validate($request, [
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',
]);
我来到这里寻找为什么短路会在默认情况下关闭,我认为James在他的推理中是正确的,因为它是在同一领域接收多个验证错误。