В Ларавеле довольно удобно сделана валидация данных во входящих запросах. С её помощью можно валидировать даже массивы, в том числе и вложенные. Документация на этот счет слегка лаконична, поэтому позволю себе небольшой пример.
Допустим, мы хотим принять массив с переменным количеством элементов, а в каждом элементе чтобы были поля id
и weight
. Вот так:
[
'items' => [
['id' => 1, 'weight' => 5],
['id' => 5, 'weight' => 4],
['id' => 7, 'weight' => 3],
['id' => 8, 'weight' => 2],
['id' => 9, 'weight' => 1],
// ...
],
]
Тогда нам нужно, чтобы поле items
в запросе — присутствовало и было массивом, а значения id
и weight
— присутствовали и были целыми числами. Валидируется это так:
$data = $request->validate([
'items' => 'array|required',
'items.*.id' => 'integer|required',
'items.*.weight' => 'integer|required',
]);
Таким образом будет отсечено все кроме поля items
, в котором во всех элементах останутся только поля id
и weight
. Если по какому-то из значений вложенных элементов будут ошибки, то в errors
они попадут с ключами items.i.id
и items.i.weight
, где i
— индекс элемента в массиве items
.