Laravel 填充数组元素的验证规则
Posted
技术标签:
【中文标题】Laravel 填充数组元素的验证规则【英文标题】:Laravel filled validation rule for array element 【发布时间】:2018-04-13 02:30:15 【问题描述】:如果至少有一个数组元素为空,我需要检查输入的字符串数组并发出警告。
使用以下规则:
return Validator::make($data, [
'branches' => 'array',
'branches.*' => 'filled|max:255'
]);
但是,填充规则似乎不起作用(而 min:1 工作正常)。 它应该与数组元素一起使用吗?
更新: 分支数组不是强制性的,但如果存在它应该包含非空元素。
更新: 终于在我的验证规则中发现了错误。 它应该看起来像
return Validator::make($data, [
'branches' => 'array',
'branches.*.*' => 'filled|max:255'
]);
因为输入数组是数组数组。现在填充的规则可以按预期使用我的输入数据。
【问题讨论】:
【参考方案1】:使用 required 代替
return Validator::make($data, [
'branches' => 'required|array',
'branches.*' => 'required|max:255'
]);
来自文档:https://laravel.com/docs/5.5/validation#available-validation-rules
必填
验证中的字段必须存在于输入数据中,而不是 空的。如果出现以下情况之一,则该字段被视为“空” 条件为真:
值为 null。 该值为空字符串。 该值是一个空数组或空 Countable 对象。 该值为上传的文件,没有路径。
如果您只想在存在字段数据时验证数组,请使用filled
。您可以将其与present
结合使用。
return Validator::make($data, [
'branches' => 'present|array',
'branches.*' => 'filled|max:255'
]);
填充
正在验证的字段在存在时不能为空。
呈现
验证中的字段必须存在于输入数据中,但可以为空。
【讨论】:
这些字段不是强制性的,但如果输入请求中存在,则不应为空。 @user947668 数组本身是否允许为空?使用'branches.*' => 'required|max:255'
,我在这里检查数组的每一行的字段是否为空。
@user947668 否则请改用filled
【参考方案2】:
考虑到您的评论,您应该尝试nullable
return Validator::make($data, [
'branches' => 'nullable|array',
'branches.*' => 'nullable|max:255'
]);
或
您可以使用present
this 将确保数组应该通过值或空数组传递
return Validator::make($data, [
'branches' => 'present|array',
'branches.*' => 'nullable|max:255'
]);
【讨论】:
以上是关于Laravel 填充数组元素的验证规则的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中验证数组时,如何使用数组项规则添加验证自定义消息?