Правило digits
Правило digits используется для проверки того, что значение поля состоит ровно из указанного количества цифр. Это строгое правило не допускает наличия букв, знаков препинания, пробелов или других символов. Первым и единственным параметром передаётся целое число - требуемая длина значения.
Синтаксис
<?php
use Illuminate\Validation\Rule;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
'field' => 'digits:length'
]);
?>
Пример
Проверим, что поле 'phone' содержит ровно 11 цифр (номер телефона):
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$request = new Request();
$request->merge(['phone' => '12345678901']);
$validator = Validator::make($request->all(), [
'phone' => 'digits:11'
]);
if ($validator->fails()) {
echo 'Validation failed: ' . $validator->errors()->first('phone');
} else {
echo 'Validation passed!';
}
?>
Результат выполнения кода:
"Validation passed!"
Пример
Проверим поле 'code' на соответствие 6 цифрам. Если значение будет содержать буквы или меньше 6 символов, валидация не пройдёт:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$request = new Request();
$request->merge(['code' => 'abc123']);
$validator = Validator::make($request->all(), [
'code' => 'digits:6'
]);
if ($validator->fails()) {
echo 'Validation failed: ' . $validator->errors()->first('code');
} else {
echo 'Validation passed!';
}
?>
Результат выполнения кода:
"Validation failed: The code must be 6 digits."
Пример
Использование правила digits в контроллере для валидации банковского счёта:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class AccountController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'account_number' => 'required|digits:20'
]);
if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422);
}
return response()->json([
'message' => 'Account created successfully'
]);
}
}
?>
Пример
Проверка поля 'zip_code' на 5 цифр с выводом кастомного сообщения об ошибке:
<form method="POST" action="/submit">
@csrf
<input type="text" name="zip_code" placeholder="Enter zip code">
@error('zip_code')
<div style="color:red;">{{ $message }}</div>
@enderror
<button type="submit">Submit</button>
</form>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class FormController extends Controller
{
public function submit(Request $request)
{
$validator = Validator::make($request->all(), [
'zip_code' => 'digits:5'
], [
'zip_code.digits' => 'The zip code must contain exactly 5 digits.'
]);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
}
return redirect()->back()->with('success', 'Form submitted!');
}
}
?>
Смотрите также
-
правило
digits_between,
которое проверяет, что количество цифр находится в заданном диапазоне -
правило
numeric,
которое проверяет, что поле содержит число (целое или с плавающей точкой) -
правило
integer,
которое проверяет, что поле содержит целое число -
правило
string,
которое проверяет, что поле является строкой