Laravel验证中sometimes|required|email
和sometimes|email
之间有什么区别?我读过this discussion from laracasts,但对我来说仍然含糊不清
答案 0 :(得分:8)
来自文档:
在某些情况下,您可能希望对a执行验证检查 仅当输入数组中存在该字段时才输入字段。快点 完成此操作,将有时规则添加到规则列表
https://laravel.com/docs/5.2/validation#conditionally-adding-rules
如果我可以简化它,我会说sometimes
意味着,如果字段显示在请求中,则仅应用其余的验证规则。想象一下sometimes
就像一个if语句,它在应用任何规则之前检查请求/输入中是否存在该字段。
当我在禁用字段的页面上有一些javascript时,我会使用此规则,因为当字段被禁用时,它不会显示在请求中。如果我只是说required|email
验证器总是要应用规则,而使用sometimes
规则只会在请求中显示该字段时应用验证!希望这是有道理的。
示例:
input: []
rules: ['email' => 'sometimes|required|email']
result: pass, the request is empty so sometimes won't apply any of the rules
input: ['email' => '']
rules: ['email' => 'sometimes|required|email']
result: fail, the field is present so the required rule fails!
input: []
rules: ['email' => 'required|email']
result: fail, the request is empty and we require the email field!