php - 在 Laravel 5.7 中验证表单中的输入数组

标签 php laravel laravel-5 laravel-validation laravel-5.7

我的表单多次具有相同的输入字段。我的表单字段如下:

<input type='text' name='items[]'>
<input type='text' name='items[]'>
<input type='text' name='items[]'>

并且请求包含 ($request['items'):
array:1 [▼
  "items" => array:3 [▼
    0 => "item one"
    1 => "item two"
    2 => "item three"
  ]
]

我希望至少填写其中一项。我当前在 Controller 中的验证是
    $validator = Validator::make($request->all(),[
        'items.*' => 'required|array|size:1'
    ]);

这是行不通的。我尝试了大小、必需、可为空的组合。什么都行不通。

最佳答案

事实上,使用它就足够了:

$validator = Validator::make($request->all(),[
        'items' => 'required|array'
    ]);

所做的更改:
  • 使用 items而不是 items.* - 如果您使用 items.*,您想设置一般项目的规则这意味着您将规则分别应用于数组的每个发送元素
  • 已移除 size:1因为这意味着您只想发送一个元素(并且您至少需要一个)。你根本不需要它,因为你有 required规则。您可以阅读 documentation for required rule你可以在那里读到空数组会导致 required规则将失败,所以这个 required数组规则使该数组至少应有 1 个元素,因此您不需要 min:1size:1完全
  • 关于php - 在 Laravel 5.7 中验证表单中的输入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52404515/

    相关文章:

    php - 在 php 中使用 simplexml 获取 xml 中的父元素?

    php - 使用 Mailgun 在 Laravel 5.4 中发送邮件得到错误代码 "401 UNAUTHORIZED` 响应 : Forbidden "

    php - 未找到特征 'Illuminate\Auth\Access\HandlesAuthorization'

    Laravel Blade 自定义指令包含部分

    php - 拉维尔 5.1 : Enable SQLite foreign key constraints

    php - Fopen 接受自签名证书

    javascript - 从 View 按钮调用 Yii Controller 方法

    php - 使用python将数组打包为16位字符串

    php - Laravel:如何在 Form POST 中使用参数以在 Route::post 中使用?

    php - Laravel - 在一个方法中返回多个值