Элемент массива Laravel validate требуется, если массив присутствует - PullRequest
0 голосов
/ 19 сентября 2018

Ларавел 5.7.У меня есть проверка формы запроса для модели Foo.Модель имеет необязательное поле bar, которое должно быть массивом.Если он присутствует, он должен содержать две клавиши bing и bang.Но если массив отсутствует, очевидно, что эти два ключа не должны проверяться.

Это то, что у меня пока есть:

return [
    'bar'      => 'bail|array|size:2',
    'bar.bing' => 'required|numeric',
    'bar.bang' => 'required|numeric',
];

Это работает, когда я отправляю запрос с присутствующим массивом bar.Но когда я отправляю запрос без массива bar, я все равно получаю ошибки проверки

Обязательное поле bar.bing

Обязательное поле bar.bang

Как я могу сделать их обязательными только при наличии bar?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Попробуйте по этим правилам

return [
    'bar'      => 'nullable|bail|array|size:2',
    'bar.bing' => 'required_with:bar|numeric',
    'bar.bang' => 'required_with:bar|numeric',
]

Документы для required_with

0 голосов
/ 19 сентября 2018

Вот что я склонен делать в подобных ситуациях

public function rules(): array
{
    $rules = [
        // ...
    ];

    if ($this->bar) {
        $rules['bar'] = 'array|size:2';
        $rules['bar.bing'] = 'required|numeric';
        $rules['bar.bang'] = 'required|numeric';
    }

    return $rules;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...