Студия разработки сайтов и приложений

Netspark.ru

Laravel и валидация массивов

В Ларавеле довольно удобно сделана валидация данных во входящих запросах. С её помощью можно валидировать даже массивы, в том числе и вложенные. Документация на этот счет слегка лаконична, поэтому позволю себе небольшой пример.

Допустим, мы хотим принять массив с переменным количеством элементов, а в каждом элементе чтобы были поля 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.

Комментарии