Laravel Validation для целых чисел или конкретного слова
Я создаю правило проверки, где location
атрибут может иметь любой integer
или слово "all"
значение.
Для целочисленной проверки я использую это правило:
'location' => 'обязательно | целое число'
и для конкретного слова я могу использовать это правило:
'location' => ['required',
Rule::in([all]),
]
Как можно применять оба правила вместе, чтобы location
может быть любым целым числом или словом "all"
? Может ли регулярное выражение помочь здесь?
2 ответа
Решение
$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 )
не будет передано.
Вы могли бы использовать regex
править без required
(если вы не возражаете против отдельного сообщения об ошибке для пустых полей):
'location' => ['regex:/^(?:\d+|all)$/']
Это означает, что входное значение должно быть \d
или же all
,