数组验证数组

时间:2018-12-14 13:56:31

标签: laravel-5.6

我正在尝试为以下请求创建验证-传递给给定端点的数据必须是一个数组数组,其中每个内部数组都包含line1postcode以及外部数组是min:1。因此,例如:

[
   ['line1' => 'foo', 'postcode' => 'bar'],
   ['line1' => 'baz', 'postcode' => 'qux']
]

是对我的请求有效的数据,并且:

[
   ['line1' => 'foo', 'postcode' => 'bar'],
   ['line1' => 'baz']
]

不是。

我使用以下规则创建了一个请求验证类:

public function rules()
{
    return [
        '*.line1' => 'string|required',
        '*.postcode' => 'string|required',
    ];
}

但是我不知道如何添加最小要求。 '*' => 'min:1''' => 'min:1'都不起作用(我认为理论上第一个应该起作用,但是我认为它将每个字段的长度检查为1)

1 个答案:

答案 0 :(得分:1)

理想情况下,您将添加一个密钥,即

[ 'items' => [
       ['line1' => 'foo', 'postcode' => 'bar'],
       ['line1' => 'baz', 'postcode' => 'qux']
    ]
]

然后使用'items' => 'required|min:1'

如果无法做到这一点,是否可以在请求中添加after() method(我还没有这样做,所以不确定是否可行):

public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if (count($validator->getData())<1) {
            $validator->errors()->add('input', 'There must be at least one input');
        }
    });
}