如何在 Laravel 中验证数组

问题描述 投票:0回答:2

我正在尝试应用此问题中提供的建议如何在 Laravel 中验证数组?

所以我的验证是

'topics' => 'required|array'

主题为必填项

这非常有效,特别是当主题是大于 1 的数组时

不幸的是我传递了

[]
一个空数组,验证失败了

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

以下尝试失败

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

主题为必填项

下面的工作,问题是甚至允许空值

 'topics' => 'array',
php laravel laravel-validation
2个回答
5
投票

来自 Laravel 文档

验证基于数组的表单输入字段并不一定很痛苦。 您可以使用“点表示法”来验证数组中的属性。为了 例如,如果传入的 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.

4
投票

您可以使用present验证

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

 'topics' => 'present|array'
© www.soinside.com 2019 - 2024. All rights reserved.