【问题标题】:Laravel filled validation rule for array elementLaravel 填充数组元素的验证规则
【发布时间】: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'
    ]);

因为输入数组是数组数组。现在填充的规则可以按预期使用我的输入数据。

【问题讨论】:

    标签: php arrays laravel validation


    【解决方案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'
    ]);
    

    您可以使用presentthis 将确保数组应该通过值或空数组传递

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 2020-12-27
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多