2015-10-08 48 views
4

在Laravel 5,我们来看看那些2个不同的验证规则:Laravel 5 - 验证规则的 “有时” 真正意义

Validator::make($data, ['email' => 'sometimes|email']); 

Validator::make($data, ['email' => 'email']); 

测试之后:

  • 如果$ data ['email']存在并且是有效的电子邮件地址=>都会成功。
  • 如果$ data ['email']存在并且不是有效的电子邮件地址=>都会失败。
  • 如果$ data确实有电子邮件密钥=>两者都会成功。

那么这两条规则有什么区别? “有时”的目的是什么?

回答

5

从Laravel的validation docs

在某些情况下,你可能希望对现场运行验证检查只有在该领域存在输入数组英寸要快速完成此操作,请将sometimes规则添加到您的规则列表中。

所以,从本质上讲,email将仅在该领域实际上是POST请求的一部分进行验证。

这与required规则,即如果留空领域将抛出一个错误特别有用,但sometimes只能这样做,如果该领域在首位存在。如果没有sometimes,缺少物理字段总是会导致“必填字段”错误。

这不是你经常需要的东西,但它是一个漂亮的小功能。

+1

好吧,这样的规则“有时|电子邮件”和规则“电子邮件”真的没有区别吗? “有时”仅在与“所需”权利结合使用时才有用? – PGBI

+0

以下规则完全不同:'required | email','sometimes | required | email'和'email'。如果输入为空,输入不是有效的电子邮件地址,并且没有“email”输入字段,则第一个输入失败。如果你有一个'email'输入字段,第二个规则只会失败**。如果输入不是有效的电子邮件地址,则第三个将失败。 –

+0

你说的一切都是真实有趣的。但是我的问题要简单得多:我只是比较这两条规则,而仅仅是这两条规则:'有时候|电子邮件和电子邮件。你从不谈论'有时候|电子邮件':)我们是否同意那两个是完全相同的? – PGBI