У меня есть валидатор, который выглядит так:
$validator = Validator::make($shipment, [
'collection_date' => 'required|date',
"parcels" => "required|array|min:1",
"parcels.*.items" => "required|array",
"parcels.*.items.*.value" => "required"
]);
Теперь, глядя на это, легко увидеть, что участки должны быть массивом, и каждая часть должна иметь свойство items
, и это должен быть массив, а каждый элемент должен иметь свойство value
. * 1006. *
Однако я получаю вместо того, чтобы кто-то проходил через это, как и следовало ожидать,
[parcels:[{items:[{value:1}]}]]
Они передают это так:
[parcels:[{items:{value:1}}]]
Когда есть только один предмет. Валидатор терпит неудачу, как я хочу, конечно, но сообщение довольно странное, потому что оно действительно видит items
как массив, хотя это на самом деле ассоциативный массив, а не список элементов.
Так что в сообщении говорится что-то вроде error: parcels.0.items.values has no property value
- я точно не помню, что оно говорит, я просто знаю, что оно явно пыталось получить доступ к «значению», как если бы оно было членом массива «items» (потому что технически это так! просто не так, как я хочу).
В то время как то, что я действительно хотел бы сказать, это что-то вроде error: parcels.0.items was not supplied as an array