Image

Дата оновлення перекладу 2023-09-25

Image

Обмеження Image працює точно як обмеження File, окрім того, що його опції mimeTypes та mimeTypesMessage автоматично налаштовані для роботи конкретно з файлами зображень.

Додатково він має опції, тому ви можете валідувати ширину та висоту зображення.

Див. обмеження File, щоб побачити основну частину документації цього обмеження.

????????????? ?? ??????????? ??? ??????
???? Image
????????? ImageValidator

Базове застосування

Це обмеження частіше за все використовується у властивості, яка буде відображена у формі як поле FileType. Наприклад, уявіть, що ви створюєте форму авторів, де ви можете завантажувати зображення "портрет" для автора. У вашій формі, властивість headshot буде типом file. Клас Author може виглядати так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\HttpFoundation\File\File;

class Author
{
    protected File $headshot;

    public function setHeadshot(File $file = null): void
    {
        $this->headshot = $file;
    }

    public function getHeadshot(): File
    {
        return $this->headshot;
    }
}

Щоб гарантувати, що обʼєкт headshot File є валідним зображенням та що він знаходиться у діапазоні конкретного розміру, додайте наступне:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Image(
        minWidth: 200,
        maxWidth: 400,
        minHeight: 200,
        maxHeight: 400,
    )]
    protected File $headshot;
}

Властивість headshot валідується, щоб гарантувати, що це реальне зображення, і що воно відповідає конкретному діапазону ширини та висоти.

Ви можете також захотіти гарантувати, що зображення headshot є квадратним. У цьому випадку, ви можете відключити портретну та альбомну орієнтації, як показано у наступному коді:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Image(
        allowLandscape: false,
        allowPortrait: false,
    )]
    protected File $headshot;
}

Ви можете змішати всі опції обмеження, щоб створити потужні правила валідації.

Опції

Це обмеження має всі такі ж опції, як і обмеження File. Однак, воно модифікує два значення опцій за замовчуванням та додає ще декілька інших опцій.

allowLandscape

тип: Boolean за замовчуванням: true

Якщо ця опція - false, зображення не може мати альбомну орієнтацію.

allowLandscapeMessage

тип: string за замовчуванням: Зображення має альбомну орієнтацію ({{ width }}x{{ height }}px). Зображення з альбомною орієнтацією не дозволені

Це повідомлення помилки, якщо зображення має альбомну орієнтацію, а ви встановили allowLandscape як false.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? ??????
{{ width }} ??????? ??????

allowPortrait

тип: Boolean за замовчуванням: true

Якщо ця опція - false, зображення не може мати портетну орієнтацію.

allowPortraitMessage

тип: string за замовчуванням: Зображення має портретну орієнтацію ({{ width }}x{{ height }}px). Зображення з портретною орієнтацією не дозволені

Це повідомлення помилки, якщо зображення має портретну орієнтацію, а ви встановили allowPortrait як false.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? ??????
{{ width }} ??????? ??????

allowSquare

тип: Boolean за замовчуванням: true

Якщо ця опція - false, зображення не може бути квадратним. Якщо ви хочете форсувати квадратне зображення, тоді залиште цій опції її значення за замовчуванням true та встановіть allowLandscape і allowPortrait як false.

allowSquareMessage

type: string за замовчуванням: Зображення квадратне ({{ width }}x{{ height }}px). Квадратні зображення не дозволені

Повідомленн помилки, якщо зображення квадратне, а ви встановили allowSquare як false.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? ??????
{{ width }} ??????? ??????

corruptedMessage

тип: string за замовчуванням: Файл зображення пошкоджено.

Повідомлення помилки, коли опція detectCorrupted включена, а зображення пошкоджено.

Це повідомлення не має параметрів.

detectCorrupted

тип: boolean за замовчуванням: false

Якщо ця опція - true, зміст зображення валідується, щоб гарантувати, що зображення не пошкоджено. Валідація проводиться за допомогою PHP-функції imagecreatefromstring, яка вимагає підключення розширення PHP GD.

Дата оновлення перекладу 2023-09-24

groups

тип: array | string за замовчуванням: null

Визначає групу або групи валідації обмеження. Прочитайте більше про групи валідації.

maxHeight

тип: integer

Якщо встановлено, висота файлу зображення має бути меншою за або дорівнювати цьому значенню у пікселях.

maxHeightMessage

тип: string за замовчуванням: Висота зображення завелика ({{ height }}px). Дозволена максимальна висота - {{ max_height }}px.

Повідомлення помилки, якщо висота зображення перевищує maxHeight.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? (?????????) ????????
{{ max_height }} ??????????? ????????? ??????

maxPixels

тип: integer

Якщо встановлено, кількість пікселів файлу зображення має бути меншою за або дорівнювати цьому значенню.

maxPixelsMessage

type: string за замовчуванням: Зображення має забагато пікселів ({{ pixels }} pixels). Максимальна очікувана кількість {{ max_pixels }} пікселів.

Повідомлення помилки, якщо кількість пікселів зображення перевищує maxPixels.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? ?????? ??????????
{{ max_pixels }} ??????????? ????????? ????????? ????????
{{ pixels }} ??????? ????????? ????????
{{ width }} ??????? ?????? ??????????

maxRatio

Тип: float

Якщо встановлено, співвідношення сторін (width / height) файлу зображення має бути меншим за або дорівнювати цьому значенню.

maxRatioMessage

type: string за замовчуванням: Співвідношення сторін зображення занадто велике ({{ ratio }}). Дозволене максимальне співвідношення сторін - {{ max_ratio }}

Повідомлення помилки, якщо співвідношення сторін зображення перевищує maxPixels.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ max_ratio }} ??????????? ???????? ?????????????? ??????
{{ ratio }} ??????? (?????????) ?????????????? ??????

maxWidth

тип: integer

Якщо встановлено, ширина файлу зображення має бути меншою за або дорівнювати цьому значенню у пікселях.

maxWidthMessage

type: string за замовчуванням: Ширина зображення завелика ({{ width }}px). Дозволена максимальна ширина - {{ max_width }}px.

Повідомлення помилки, якщо ширина зображення перевищує maxWidth.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ max_width }} ??????????? ????????? ??????
{{ width }} ??????? (?????????) ??????

mimeTypes

тип: array або string за замовчуванням: image/*

Ви можете знайти список існуючих mime-типів зображення на сайті IANA.

mimeTypesMessage

тип: string за замовчуванням: Цей файл не є валідним зображенням.

Якщо всі значення опції mimeTypes є піднабором image/*, повідомлення помилки натомість буде: Mime-тип цього файлу не є валідним ({{ type }}). Дозволні mime-типи: {{ types }}.

You can use the following parameters in this message:

Parameter Description
{{ file }} Absolute file path
{{ name }} Base file name
{{ type }} The MIME type of the given file
{{ types }} The list of allowed MIME types

minHeight

тип: integer

Якщо встановлено, висота файлу зображення має бути більшою за або дорівнювати цьому значенню у пікселях.

minHeightMessage

тип: string за замовчуванням: Висота зображення замала ({{ height }}px). Мінімальна очікувана висота - {{ min_height }}px.

Повідомлення помилки, якщо висота зображення менша за minHeight.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? (?????????) ??????
{{ min_height }} ?????????? ????????? ??????

minPixels

тип: integer

Якщо встановлено, кількість пікселів файлу зображення має бути більшою за або дорівнювати цьому значенню.

minPixelsMessage

тип: string за замовчуванням: Зображення має замало пікселів ({{ pixels }} pixels). Мінімальна очікувана кількість - {{ min_pixels }} пікселів.

Повідомлення помилки, якщо кількість пікселів зображення менша за minPixels.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ height }} ??????? ?????? ??????????
{{ min_pixels }} ?????????? ????????? ????????? ????????
{{ pixels }} ??????? ????????? ????????
{{ width }} ??????? ?????? ??????????

minRatio

тип: float

Якщо встановлено, співвідношення сторін (width / height) файлу зображення має бути більшим за або дорівнювати цьому значенню.

minRatioMessage

тип: string за замовчуванням: Співвідношення сторін замале ({{ ratio }}). Мінімальне очікуване співвідношення сторін - {{ min_ratio }}

Повідомлення помилки, якщо співвідношення сторін зображення менше за minRatio.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ min_ratio }} ?????????? ????????? ?????????????? ??????
{{ ratio }} ??????? (?????????) ?????????????? ??????

minWidth

тип: integer

Якщо встановлено, ширина файлу зображення має бути більшою за або дорівнювати цьому значенню у пікселях.

minWidthMessage

тип: string за замовчуванням: Ширина зображення замала ({{ width }}px). Мінімальна очікувана ширина - {{ min_width }}px.

Повідомлення помилки, якщо ширина зображення менша за minWidth.

Ви можете використати наступні параметри у цьому повідомленні:

???????? ????
{{ min_width }} ?????????? ????????? ??????
{{ width }} ??????? (?????????) ??????

sizeNotDetectedMessage

тип: string за замовчуванням: Розмір зображення не може бути виявлено.

Якщо система не може визначити розмір зображення, буде відображено цю помилку. Це відбудеться тільки якщо було встановлено хоча б одне з обмежень опцій розміру зображення.

Це повідомлення не має параметрів.