Проверка Laravel: обязательное поле в необязательном массиве - PullRequest
0 голосов
/ 28 августа 2018

Запрос может содержать поле coord ({x: 1, y: 2}) или не содержать его. Например:

Правильно (без coord):

[
    'another_param' => 'value',
],

Правильно:

[
    'another_param' => 'value',
    'coord' => [
        'x' => 1,
        'y' => 2,
    ],
],

Неверно (неверный формат coord):

[
    'another_param' => 'value',
    'coord' => [
        'x' => 1,
    ],
],

Может ли это быть написано по стандартным правилам (без пользовательских и замыканий).

Моя попытка:

'rules' => [
    'coord' => 'array',
    'coord.x' => 'required',
    'coord.y' => 'required',
],

Но если запрос не содержит coord, то ошибка: поле coord.x обязательно для заполнения.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете требовать поля, когда массив предоставляется с помощью required_with:

'rules' => [
    'coord' => 'sometimes|array|min:1',
    'coord.x' => 'required_with:coord',
    'coord.y' => 'required_with:coord',
],

Правило sometimes позволяет отбрасывать это поле, а min:1 гарантирует, что при наличии этого поля координат это не пустой массив.

0 голосов
/ 28 августа 2018

Вы можете использовать правило проверки sometimes, поэтому оно применяется только при наличии поля.

'rules' => [
    'coord' => 'sometimes|array',
    'coord.x' => 'required',
    'coord.y' => 'required',
],
...