Правило gte
Правило gte (greater than or equal) проверяет, что переданное значение больше или равно заданному числу. Это правило полезно для проверки возраста, количества товаров, цен и других числовых полей. Правило работает с числами, строками (сравнивает длину) и файлами (сравнивает размер в килобайтах).
Синтаксис
<?php
'field' => 'gte:100'
?>
В качестве параметра передаётся число - минимальное допустимое значение. Поле считается валидным, если его значение больше или равно этому числу.
Пример
Давайте создадим запрос валидации для проверки возраста пользователя:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'age' => 'required|gte:18',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'User created successfully'], 201);
}
}
?>
Результат выполнения кода при значении 'age' равном 25:
{"message":"User created successfully"}
Результат выполнения кода при значении 'age' равном 17:
{"age":["The age must be greater than or equal to 18."]}
Пример
Правило gte можно использовать в форме запроса для проверки количества товаров:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class OrderRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'quantity' => 'required|integer|gte:1',
'price' => 'required|numeric|gte:100',
];
}
public function messages()
{
return [
'quantity.gte' => 'The quantity must be at least 1.',
'price.gte' => 'The price must be at least 100.',
];
}
}
?>
Результат выполнения кода при передаче полей 'quantity' = 0 и 'price' = 200:
{"quantity":["The quantity must be at least 1."]}
Пример
Правило gte также работает со строками, сравнивая их длину. Давайте проверим, что пароль содержит не менее 8 символов:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class ProfileController extends Controller
{
public function updatePassword(Request $request)
{
$validator = Validator::make($request->all(), [
'password' => 'required|string|gte:8',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Password updated successfully'], 200);
}
}
?>
Результат выполнения кода при передаче пароля 'Secret12' (длина 8 символов):
{"message":"Password updated successfully"}
Результат выполнения кода при передаче пароля 'Secret' (длина 6 символов):
{"password":["The password must be greater than or equal to 8."]}
Пример
Правило gte можно использовать для проверки размера загружаемого файла в килобайтах. Давайте проверим, что файл изображения имеет размер не менее 100 КБ:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class FileController extends Controller
{
public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'avatar' => 'required|image|gte:100',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
$path = $request->file('avatar')->store('avatars', 'public');
return response()->json(['path' => $path], 200);
}
}
?>
Результат выполнения кода при загрузке файла размером 150 КБ:
{"path":"avatars/avatar_1234567890.jpg"}