Laravel 有时 vs 有时|必需

问题描述 投票:0回答:2

Laravel 验证中

sometimes|required|email
sometimes|email
之间有什么区别?我已经阅读了 来自 laracasts 的讨论,但对我来说仍然不明确

validation laravel required
2个回答
48
投票

来自文档:

在某些情况下,您可能希望针对 仅当该字段存在于输入数组中时才使用该字段。要快点 要实现此目的,请将“有时”规则添加到您的规则列表中

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!



0
投票
这意味着验证三个规则

    sometimes
  • 规则意味着 - 如果出现
    email
    字段,则应用另外两个规则验证,如果未出现
    email
    字段,则不执行任何操作
  • required
  • 规则意味着 -
    email
    字段不得为
    empty
    null
  • email
  • 规则意味着 -
    email
    字段必须格式化为电子邮件地址
    
    
email => 'sometimes|email'

基本上做同样的事情,因为

email

规则不允许有

null
empty
值(它们没有电子邮件格式)
    

© www.soinside.com 2019 - 2024. All rights reserved.