Я пытаюсь проверить число в laravel. Что должно произойти, так это то, что число может увеличиться только в 10 раз.
Например:
10: Valid number
11: invalid number
11,5: invalid number
15: invald number
20: valid number
140: valid number
Правило, которое я установил в своем запросе, выглядит так:
"amount" => ["required", "numeric", new UserHasPrivatePublicBalance(), "gte:10"],
Есть ли в Laravel встроенное правило для чего-то подобного? Или может кто-нибудь указать мне правильное направление, как проверить такую вещь на простом PHP, чтобы я мог создать собственное правило?
Спасибо!
Ваша версия ларавеля?
если вам нужен хакерский способ, вы можете сделать regex:/^\d+0$/, но он может не работать для запросов JSON, поскольку числа в JSON являются фактическими числами, а не числовыми строками.






Нет, для этого нет встроенного правила проверки, но чтобы проверить, делится ли число на 10, вы можете сделать:
if ($number % 10 != 0) {
return false;
}
Оператор модуля % возвращает остаток от деления, поэтому результатом всегда будет 0, если число делится на 10.
https://laravel.com/docs/5.7/validation#using-closes
Для вашего случая
'amount' => [
'required',
'numeric',
function ($attribute, $value, $fail) {
if ($value % 10 !== 0) {
$fail($attribute.' must be 10 divisible.'); // your message
}
},
],
Возможно, вам потребуется создать собственное правило, где
$number % 10 == 0, то есть число делится на 10.