Правило dimensions
Правило dimensions применяется к полям формы, которые содержат загруженные изображения, и позволяет проверить соответствие их размеров заданным критериям. Правило принимает массив параметров, определяющих требования к ширине, высоте, соотношению сторон и другим характеристикам изображения. Если изображение не соответствует указанным параметрам, валидация не проходит.
Синтаксис
<?php
Rule::dimensions($parameters);
?>
Параметр $parameters представляет собой массив ключей, определяющих требования к изображению. Доступные ключи: min_width, min_height, max_width, max_height, width, height, ratio.
Пример
Давайте проверим, что загружаемое изображение имеет ширину не менее 200 пикселей и высоту не менее 150 пикселей:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
use IlluminateValidationRule;
class ImageController extends Controller
{
public function upload(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => [
'required',
'image',
Rule::dimensions([
'min_width' => 200,
'min_height' => 150,
]),
],
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Image uploaded successfully']);
}
}
?>
Пример
Давайте проверим, что изображение имеет точную ширину 400 пикселей и высоту 300 пикселей:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
use IlluminateValidationRule;
class AvatarController extends Controller
{
public function update(Request $request)
{
$validator = Validator::make($request->all(), [
'avatar' => [
'required',
'image',
Rule::dimensions([
'width' => 400,
'height' => 300,
]),
],
]);
if ($validator->fails()) {
return back()->withErrors($validator);
}
return redirect()->route('profile')->with('success', 'Avatar updated');
}
}
?>
Пример
Давайте проверим, что изображение имеет соотношение сторон 1:1 (квадратное), а его максимальная ширина не превышает 800 пикселей:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
use IlluminateValidationRule;
class ProductController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'product_image' => [
'required',
'image',
Rule::dimensions([
'ratio' => 1,
'max_width' => 800,
]),
],
]);
if ($validator->fails()) {
$errors = $validator->errors();
echo "Validation errors: " . json_encode($errors->all());
return;
}
echo "Product image validated successfully";
}
}
?>
Результат выполнения кода при успешной валидации:
"Product image validated successfully"
Пример
Давайте используем правило в классе FormRequest для проверки загружаемого баннера с ограничениями по минимальным и максимальным размерам:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
use IlluminateValidationRule;
class BannerRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'banner' => [
'required',
'image',
Rule::dimensions([
'min_width' => 600,
'min_height' => 200,
'max_width' => 1200,
'max_height' => 400,
]),
],
];
}
}
?>