Laravel数组元素的filled验证规则

5

我需要检查输入的字符串数组,并在至少有一个空元素时发出警告。

使用以下规则:

return Validator::make($data, [
    'branches'         => 'array',
    'branches.*'       => 'filled|max:255'
    ]);

然而,似乎填充规则不起作用(而min:1可以正常工作)。 它应该适用于数组元素吗?

更新: 分支数组不是必需的,但如果存在,它应该包含非空元素。

更新: 最终在我的验证规则中找到了错误。 它应该像这样:

return Validator::make($data, [
    'branches'         => 'array',
    'branches.*.*'       => 'filled|max:255'
    ]);

由于输入数组是一个数组的数组。现在填充规则与我的输入数据一样有效。

2个回答

4
请使用 required 代替。
return Validator::make($data, [
    'branches'         => 'required|array',
    'branches.*'       => 'required|max:255'
]);

从文档中得知:https://laravel.com/docs/5.5/validation#available-validation-rules

required

验证字段必须在输入数据中存在且不为空。如果以下任一条件为真,则认为字段为空:

  • 值为null
  • 值为空字符串。
  • 值为空数组或空的可计数对象。
  • 上传文件没有路径。

如果您只想在存在字段数据时验证数组,请使用filled。您可以将其与present结合使用。

return Validator::make($data, [
    'branches'         => 'present|array',
    'branches.*'       => 'filled|max:255'
]);

非空

当存在时,验证字段不能为空。

必填

验证字段必须在输入数据中存在,但可以为空。


这些字段不是必填的,但如果在输入请求中存在,则不应为空。 - user947668
@user947668 数组本身是否允许为空?使用 'branches.*' => 'required|max:255',我在这里检查每行数组的字段是否为空。 - Lars Mertens
如果@user947668不存在,则使用filled代替。 - Lars Mertens

2
考虑到您的评论,您应该尝试使用nullable
return Validator::make($data, [
    'branches'         => 'nullable|array',
    'branches.*'       => 'nullable|max:255'
]);

或者

你可以使用present,这将确保数组传递的是值或空数组。

return Validator::make($data, [
    'branches'         => 'present|array',
    'branches.*'       => 'nullable|max:255'
]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接