Правило lte
Правило lte предназначено для валидации числовых значений
и дат. Оно проверяет, что значение поля меньше или равно
указанному порогу. Правило принимает один параметр -
числовое значение или имя другого поля для сравнения.
Для проверки на "меньше" используется правило lt,
а на "больше или равно" - gte.
Синтаксис
Правило передаётся в виде строки с параметром через двоеточие:
<?php
'lte:10'
?>
Также можно передать имя другого поля для сравнения:
<?php
'lte:max_value'
?>
Пример
Создадим запрос на валидацию, где поле 'age'
должно быть меньше или равно 18:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$data = $request->all();
$validator = Validator::make($data, [
'age' => 'required|lte:18',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Validation passed']);
}
}
?>
Результат выполнения кода при передаче значения 20:
{
"age": [
"The age must be less than or equal to 18."
]
}
При передаче значения 18 валидация проходит успешно.
Пример
Рассмотрим сравнение с другим полем. Поле 'start_age'
должно быть меньше или равно полю 'end_age':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class AgeController extends Controller
{
public function store(Request $request)
{
$data = $request->all();
$validator = Validator::make($data, [
'start_age' => 'required|lte:end_age',
'end_age' => 'required|integer',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Validation passed']);
}
}
?>
Результат выполнения кода при передаче значений 25 для
'start_age' и 20 для 'end_age':
{
"start_age": [
"The start age must be less than or equal to end age."
]
}
Пример
Правило lte также работает с датами. Проверим,
что дата начала не позже даты окончания:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class EventController extends Controller
{
public function store(Request $request)
{
$data = $request->all();
$validator = Validator::make($data, [
'start_date' => 'required|date|lte:end_date',
'end_date' => 'required|date',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Validation passed']);
}
}
?>
Результат выполнения кода при передаче дат '2025-01-01'
для 'start_date' и '2024-12-31' для
'end_date':
{
"start_date": [
"The start date must be less than or equal to end date."
]
}
Пример
Использование правила lte в Form Request.
Создадим отдельный класс запроса для валидации:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class DiscountRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'discount' => 'required|integer|lte:100',
'min_order' => 'required|integer|lte:max_order',
'max_order' => 'required|integer',
];
}
}
?>
Теперь в контроллере можно использовать этот запрос для автоматической валидации:
<?php
namespace AppHttpControllers;
use AppHttpRequestsDiscountRequest;
class DiscountController extends Controller
{
public function store(DiscountRequest $request)
{
return response()->json(['message' => 'Discount saved']);
}
}
?>