Правило size
Правило size проверяет, что значение поля имеет точный размер.
Для строк оно проверяет количество символов, для массивов - количество элементов,
для чисел - числовое значение, для файлов - размер в килобайтах.
Первый и единственный параметр - требуемый размер.
Синтаксис
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
Validator::make($request->all(), [
'field' => 'size:value'
]);
?>
Пример
Проверим, что строка ровно из 5 символов:
<?php
namespace AppHttpControllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use IlluminateSupportFacadesHash;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'size:5'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'User created successfully']);
}
}
?>
Пример
Проверим, что массив содержит ровно 3 элемента:
<?php
namespace AppHttpControllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class PostController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'tags' => 'size:3'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Tags are valid']);
}
}
?>
Пример
Проверим, что число равно 100:
<?php
namespace AppHttpControllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ProductController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'quantity' => 'size:100'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'Quantity is valid']);
}
}
?>
Пример
Проверим, что файл имеет размер ровно 2048 килобайт (2 МБ):
<?php
namespace AppHttpControllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class FileController extends Controller
{
public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'size:2048'
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
return response()->json(['message' => 'File size is valid']);
}
}
?>
Пример
Использование правила size в FormRequest:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class ArticleRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'title' => 'required|size:10',
'content' => 'required|size:50',
'views' => 'size:0'
];
}
public function messages(): array
{
return [
'title.size' => 'The title must be exactly 10 characters.',
'content.size' => 'The content must be exactly 50 characters.',
'views.size' => 'The views must be exactly 0.'
];
}
}
?>
Пример
Проверим на практике с использованием контроллера:
<?php
namespace AppHttpControllers;
use AppHttpRequestsCommentRequest;
use AppModelsComment;
use IlluminateHttpJsonResponse;
class CommentController extends Controller
{
public function store(CommentRequest $request): JsonResponse
{
$data = $request->validated();
$comment = Comment::create($data);
return response()->json([
'message' => 'Comment created successfully',
'comment' => $comment
], 201);
}
}
?>
Результат выполнения кода при валидных данных:
{
"message": "Comment created successfully",
"comment": {
"id": 1,
"text": "abcde",
"updated_at": "2026-09-07T10:30:00.000000Z",
"created_at": "2026-09-07T10:30:00.000000Z"
}
}