РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
325 of 1361 menu

Правило Image

Правило Image применяется к полю формы, которое содержит загруженный файл, и проверяет, что этот файл является изображением. Правило позволяет ограничить минимальную и максимальную ширину, высоту, а также соотношение сторон. Обычно используется вместе с типом поля FileType.

Синтаксис

#[Image( minWidth: 100, maxWidth: 2000, minHeight: 100, maxHeight: 2000, minRatio: 0.5, maxRatio: 2.0, allowSquare: true, allowLandscape: true, allowPortrait: true, detectCorrupted: true, mimeTypes: ['image/jpeg', 'image/png'], maxSize: '2M' )]

Пример

Давайте создадим форму с полем для загрузки изображения и повесим на него правило Image:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormExtensionCoreTypeFileType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsImage; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('cover', FileType::class, [ 'label' => 'Cover image', 'constraints' => [ new Image([ 'minWidth' => 100, 'maxWidth' => 2000, 'minHeight' => 100, 'maxHeight' => 2000, ]), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

Пример

Давайте обработаем форму в контроллере и выведем сообщение об успешной загрузке:

<?php namespace AppController; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function upload(Request $request): Response { $form = $this->createForm(ArticleType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { return new Response('image uploaded'); } return $this->render('article/upload.html.twig', [ 'form' => $form->createView(), ]); } } ?>

Пример

Давайте выведем форму в шаблоне Twig:

{{ form_start(form) }} {{ form_row(form.cover) }} <button type="submit">Upload</button> {{ form_end(form) }}

Результат выполнения кода для корректного изображения:

"image uploaded"

Смотрите также

  • класс Form,
    который представляет форму в Symfony
  • метод isValid,
    который проверяет, прошла ли форма валидацию
  • правило File,
    которое проверяет загруженный файл
  • тип поля FileType,
    который создаёт поле для загрузки файла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить