Laravel Validation для целых чисел или конкретного слова - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю правило проверки, в котором атрибут location может иметь любое значение integer или слово "all".
Для проверки целочисленных значений я использую это правило:

'location' => 'required|integer'
и для определенного слова могу использовать это правило:
'location' => ['required', Rule::in([all])] 

Как можно применять оба правила вместе, так что location может быть любымцелое число или слово "all"?Может ли здесь помочь регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018
$this->validate($request, [
    'location' => [
        'required',
        'max:255',
        function ($attribute, $value, $fail) {
            if( is_int( $value ) || 'all' === $value ) {
                return true;
            } else {
                $fail($attribute.' is invalid.');
            }
        },
    ],
]);

Но имейте в виду: Если вы отправите integer через форму - вы получите string.И проверка is_int( $value ) не будет пройдена.

0 голосов
/ 15 ноября 2018

Вы можете использовать правило regex без required (если вы не возражаете против отдельного сообщения об ошибке для пустых полей):

'location' => ['regex:/^(?:\d+|all)$/']

Это означает, что входное значение должно быть либо \d или all.

...