如果您仔细检查验证规则,特别是:
return [
// ...
'invoices' => 'required|array',
'invoices.id' => 'required|integer', // <---
'invoices.description' => 'string', // <---
'invoices.amount' => 'required|numeric', // <---
'invoices.type' => 'required|string', // <---
];
这样的设置应该通过验证(至少是该部分):
$invoices = [
'id' => 123,
'description' => 'a description',
'amount' => 123,
'type' => 'a type',
];
.. 您需要实际验证具有该结构的项数组(数组):
$invoices = [
[
'id' => 123,
'description' => 'a description',
'amount' => 123,
'type' => 'a type',
],
[
'id' => 345,
'description' => 'another description',
'amount' => 156,
'type' => 'another type',
],
];
所以。。有什么问题?
项本身的键
,但假定此规则将应用于数组中的每个项,则需要使用通配符。正如文件所说:
您还可以验证数组的每个元素。例如,到
可以执行以下操作:
$validator = Validator::make($request->all(), [
'person.*.email' => 'email|unique:users',
'person.*.first_name' => 'required_with:person.*.last_name',
]);
同样,您可以在指定验证时使用*字符
基于数组的字段的验证消息:
'custom' => [
'person.*.email' => [
'unique' => 'Each person must have a unique e-mail address',
] ],
所以在你的情况下:
return [
// ...
'invoices' => 'required|array',
'invoices.*.id' => 'required|integer', // <---
'invoices.*.description' => 'string', // <---
'invoices.*.amount' => 'required|numeric', // <---
'invoices.*.type' => 'required|string', // <---
];
检查
Validation Arrays section
文件的完整性。