Laravel:Validator只验证传递数据中存在的字段?

bar*_*a28 10 validation laravel

目前,如果我有一个关键"名称"的必需规则,验证器将失败,但我没有在数据数组中传递它.我想在这种情况下不要失败.我想只验证数据数组中存在的字段.有没有内置的方式发生,或者我必须扩展Validator类?

Hol*_*eis 22

您可以使用sometimes验证规则.

在某些情况下,只有在输入数组中存在该字段时,您可能希望对字段运行验证检查.要快速完成此操作,请将有时规则添加到规则列表中.

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

$v = Validator::make($data, array(
    'email' => 'sometimes|required|email',
));
Run Code Online (Sandbox Code Playgroud)

一定要运行,composer update因为有时候快捷方式是Laravel 4.1.14功能.

https://twitter.com/laravelphp/status/422463139293057024


Edu*_*uad 7

您可以使用nullable,如果不存在电子邮件,它将通过

$request->validate([
    'name' => 'required',
    'email' => 'nullable|email'
])
Run Code Online (Sandbox Code Playgroud)

另外,您应该删除required验证。

  • 但这并不正确。假设您有一个登录表单并使电子邮件字段可以为空,这样您就可以在不输入电子邮件地址的情况下发送表单。使用“sometimes”,您还可以同时使用“required”,这可能是登录表单之类的东西所需要的。 (3认同)
  • 我认为这个解决方案更有意义,因为当您有时使用时,它会期望该字段本身不存在于请求中,但在大多数情况下,我们确实在请求中存在该字段但为空。再次感谢 (3认同)