Laravel Validator существует или равен / условному или - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть входное значение, которое может быть либо действительным идентификатором, существующим в базе данных, либо 0, указывающим на особый случай.

В любом случае, если это значение отправляется не пустым, оно должно бытьподтверждено чем-то вроде

Validator::make($data, [
    'item_id.*' => 'required|in:0[OR]exists:items_table,id',
]);

Проблема в том, что мне не удалось найти документацию о том, как это сделать "[OR]" .Почти все, что мне удалось найти, связано с проверкой другого ключа или проверкой просто против явного массива без "или".

ПРИМЕЧАНИЕ: Это не регистр required_if /, если , потому что мне нужно проверять текущее проверенное значение, а не другой ключ.

ПРИМЕЧАНИЕ2: Эта страница: https://laravel.com/docs/5.8/validation не дает ответа

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Одним из возможных решений является создание настраиваемого правила проверки, которое проверяло бы требуемые значения. Вы можете получить больше информации относительно этого здесь

0 голосов
/ 24 апреля 2019

Вы можете легко написать свои собственные правила проверки для этой переменной. Примерно так:

if (!empty($data->item_id)){
    if($data->item_id<>0 || $data->item_id <not in list of values>){
          return Redirect::back()->withErrors('error messages here')->withInput();
    }
}
...