Laravel填充了数组元素的验证规则

时间:2017-10-31 19:55:47

标签: php arrays laravel validation

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

使用以下规则:

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

然而似乎填充规则不起作用(而min:1工作正常)。 它应该与数组元素一起使用吗?

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

更新 终于在我的验证规则中发现了错误。 它应该看起来像

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

因为输入数组是数组数组。现在填充的规则与我的输入数据一样正常工作。

2 个答案:

答案 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'
]);