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

时间:2014-01-12 01:40:37

标签: validation laravel

如果我对密钥“name”有一个必需的规则,那么Validator将失败,但我还没有在数据数组中传递它。我想在这种情况下不要失败。我想只验证数据数组中存在的字段。是否存在内置的方法,或者我必须扩展Validator类?

3 个答案:

答案 0 :(得分:20)

您可以使用sometimes验证规则。

  

在某些情况下,您可能希望对a执行验证检查   仅当输入数组中存在该字段时才输入字段。快点   完成此操作,将有时规则添加到规则列表中。

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

$v = Validator::make($data, array(
    'email' => 'sometimes|required|email',
));

请务必运行composer update,因为有时候的快捷方式是Laravel 4.1.14功能。

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

答案 1 :(得分:4)

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

$request->validate([
    'name' => 'required',
    'email' => 'nullable|email'
])

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

答案 2 :(得分:0)

对于Laravel版本低于5.9的版本

对于拥有验证器对象的任何人,使用:

Method ->validateFilled(string $attribute, mixed $value)

还可以帮助他们验证给定属性是否已填充(如果存在)。可能会帮助某人在各自情况下。

来源:-https://laravel.com/api/5.8/Illuminate/Validation/Validator.html#method_validateFilled