Laravel 有时 vs 有时|需要

Laravel sometimes vs sometimes|required

sometimes|required|emailsometimes|email 在 Laravel 验证中有什么区别?我读过 this discussion from laracasts 但对我来说仍然是模棱两可的

来自文档:

In some situations, you may wish to run validation checks against a field only if that field is present in the input array. To quickly accomplish this, add the sometimes rule to your rule list

https://laravel.com/docs/5.2/validation#conditionally-adding-rules

如果我可以简化它,我会说 sometimes 意味着,如果该字段出现在请求中,则只应用其余的验证规则。想象一下 sometimes 就像一个 if 语句,在应用任何规则之前检查字段是否存在于 request/input 中。

当我在页面上有一些 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!