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

Событие SUBMIT

Событие SUBMIT относится к классу FormEvents и срабатывает в момент отправки формы, сразу после того как Symfony привязал данные запроса к форме, но до того как запустился процесс валидации. Обработчик этого события получает объект FormEvent, из которого можно извлечь саму форму через метод getForm и отправленные данные через метод getData. Событие удобно использовать для динамического изменения полей формы или для нормализации введённых значений перед проверкой.

Синтаксис

$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { // ... });

Пример

Давайте создадим форму с полем text и в обработчике события SUBMIT приведём введённую строку к нижнему регистру:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('text', TextType::class); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $data = $event->getData(); $event->setData(mb_strtolower($data['text'])); }); } } ?>

Пример

Давайте выведем значение поля text прямо в обработчике события SUBMIT после его изменения:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('text', TextType::class); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $data = $event->getData(); echo $data['text']; }); } } ?>

Результат выполнения кода для введённой строки 'abcde':

"abcde"

Пример

Давайте динамически добавим новое поле integer в форму внутри обработчика события SUBMIT на основе значения поля text:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('text', TextType::class); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $data = $event->getData(); if ($data['text'] === 'abcde') { $form->add('integer', IntegerType::class); } }); } } ?>

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

  • событие PRE_SUBMIT,
    которое срабатывает до привязки данных к форме
  • событие POST_SUBMIT,
    которое срабатывает после отправки формы
  • метод submit,
    который запускает процесс отправки формы
  • метод handleRequest,
    который обрабатывает запрос и вызывает событие SUBMIT
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить