【问题标题】:How to Validate an array in Laravel如何在 Laravel 中验证数组
【发布时间】:2021-07-02 14:52:15
【问题描述】:

我正在尝试应用此问题中提供的建议How to validate array in Laravel?

所以我的验证是

'topics' => 'required|array'

主题为必填项

这很有效,尤其是当主题是一个大于 1 的数组时

不幸的是,我通过 [] 一个空数组验证失败

如何验证输入是一个数组,它不为空并且允许为空数组?

以下尝试失败

 'topics' => 'required|array|min:0',

主题为必填项

下面的作品,问题是即使是空值也是允许的

 'topics' => 'array',

【问题讨论】:

  • 'topics' => 'nullable|array' 是怎么回事

标签: php laravel laravel-validation


【解决方案1】:

验证基于数组的表单输入字段并不一定很痛苦。您可以使用“点表示法”来验证数组中的属性。例如,如果传入的 HTTP 请求包含 photos[profile] 字段,您可以像这样验证它:

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
    'photos.profile' => 'required|image',
]);

您还可以验证数组的每个元素。例如,要验证给定数组输入字段中的每封电子邮件是否唯一,您可以执行以下操作:

$validator = Validator::make($request->all(), [
    'person.*.email' => 'email|unique:users',
    'person.*.first_name' => 'required_with:person.*.last_name',
]);

在您的情况下,如果您想验证数组中的元素不为空,则以下内容就足够了:

'topics' => 'required|array',
'topics.*' => 'sometimes|integer', // <- for example.

【讨论】:

  • 感谢您的回答,我从您的回答中挑选的是如何验证每个单独的元素,但我的问题不是单独的元素。问题是 null 被验证为没问题,但如果我添加 required 则即使对于空数组,验证也会失败
  • 简单来说,我想要一种方法来验证请求不为空并且请求是空数组或带值的数组
  • 在带有照片的示例中,有解决方案,但是我已经在您的特定情况下更新了答案。
【解决方案2】:

你可以使用present验证

验证中的字段必须存在于输入数据中,但可以为空。

 'topics' => 'present|array'

【讨论】:

猜你喜欢
  • 2017-07-04
  • 2017-10-16
  • 2014-08-26
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多