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
за замовчуванням: Розмір зображення не може бути виявлено.
Якщо система не може визначити розмір зображення, буде відображено цю помилку. Це відбудеться тільки якщо було встановлено хоча б одне з обмежень опцій розміру зображення.
Це повідомлення не має параметрів.