数组数组验证

Array of arrays validation

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

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

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

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

不是。

我创建了一个请求验证 class,规则如下:

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

但是我不知道如何添加最低要求。 '*' => 'min:1''' => 'min:1' 都不起作用(我认为第一个 理论上应该 起作用,但我认为它会检查每个字段的长度是否为 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');
        }
    });
}