我正在尝试为以下请求创建验证-传递给给定端点的数据必须是一个数组数组,其中每个内部数组都包含line1
和postcode
以及外部数组是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)
答案 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');
}
});
}