Laravel Validation в зависимости от значения поля - PullRequest
0 голосов
/ 30 августа 2018

Допустим, у меня есть поле со списком с некоторыми значениями

<option value="0">All</option>
<option value="1">ABC</option>
<option value="2">PQR</option>
<option value="3">XYZ</option>

Моя проверка выглядит следующим образом

'dept_id' => 'required|exists:department,id'

Как вы можете видеть, я хочу, чтобы поле dept_id было идентификатором, существующим в столбце идентификатора таблицы отделов, но мой первый вариант - "Все" , чей идентификатор, очевидно, не существует в таблице отделов.

Так как я могу игнорировать правило существует , если value = 0 в Laravel 5.6?

1 Ответ

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

у вас есть 2 способа создания пользовательской проверки правила,

или используйте этот HTML-код

<option>All</option>
<option value="1">ABC</option>
<option value="2">PQR</option>
<option value="3">XYZ</option>

и удалите правило required.

Я рекомендую способ пользовательского правила проверки, пример будет выглядеть так:

$validator = Validator::make($request->all(), [
    'dept_id' => [
        'required',
        function($attribute, $value, $fail) {
            if ($value != '0') {
               // check the existence of $value in db 
               // if exists return true

            }
            // return error because it was neither found in db  nor its All
            return $fail($attribute.' is invalid.');
        },
    ],
]);

$validatior->validate();
...