首页 > 解决方案 > Symfony 表单事件 POST_SUBMIT

问题描述

我试图了解 symfony 表单中的事件监听器是如何工作的。我尝试了不同的东西,我真的不知道我错在哪里......

这是我的表格:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('user', EntityType::class, [
            'class'        => User::class,
            'label'        => 'User',
            'choice_label' => 'email',
            'attr'         => ['class' => 'form-control']
        ])
        ->add('submit', SubmitType::class, [
            'label' => 'Select',
            'attr'  => ['class' => 'btn-primary btn-block']
        ]);
    $builder->get('user')->addEventListener(
        FormEvents::POST_SUBMIT,
        function (FormEvent $event) {
            dump($event->getData());
            dump($event->getForm());
        });
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([]);
}

我的猜测是,每当我提交表单时它会转储我一些数据,但它不会转储任何东西。

我尝试更改事件类型,但只有 PRE_SET_DATA 和 POST_SET_DATA 正在转储信息(尽管 $event->getData() 为空)...

谢谢你的帮助 !

标签: formssymfonyevents

解决方案


您必须为表单生成器添加事件。


$builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $event) {
    dump($event->getData());
    dump($event->getForm());
});

https://symfony.com/doc/current/form/events.html


推荐阅读