我需要检查字符串的输入数组,并在至少有一个数组元素为空时发出警告。
使用以下规则:
return Validator::make($data, [
'branches' => 'array',
'branches.*' => 'filled|max:255'
]);
然而似乎填充规则不起作用(而min:1工作正常)。 它应该与数组元素一起使用吗?
更新 分支数组不是必需的,但如果存在,它应该包含非空元素。
更新 终于在我的验证规则中发现了错误。 它应该看起来像
return Validator::make($data, [
'branches' => 'array',
'branches.*.*' => 'filled|max:255'
]);
因为输入数组是数组数组。现在填充的规则与我的输入数据一样正常工作。
答案 0 :(得分:3)
使用required而不是
return Validator::make($data, [
'branches' => 'required|array',
'branches.*' => 'required|max:255'
]);
来自文档:https://laravel.com/docs/5.5/validation#available-validation-rules
<强>需要强>
验证字段必须存在于输入数据中,而不是 空。如果下列之一,则字段被视为“空” 条件是真的:
- 值 null 。
- 该值为空字符串。
- 该值为空数组或空可数对象。
- 该值是一个没有路径的上传文件。
如果要仅在存在字段数据时验证数组,请使用filled
。您可以将其与present
结合使用。
return Validator::make($data, [
'branches' => 'present|array',
'branches.*' => 'filled|max:255'
]);
<强>填充强>
验证字段存在时不得为空。
<强>本强>
验证字段必须存在于输入数据中,但可以为空。
答案 1 :(得分:0)
考虑到您的评论,您应该尝试nullable
return Validator::make($data, [
'branches' => 'nullable|array',
'branches.*' => 'nullable|max:255'
]);
或强>
您可以使用present
这将确保数组应该使用值传递或只传递一个空数组
return Validator::make($data, [
'branches' => 'present|array',
'branches.*' => 'nullable|max:255'
]);