Forms 正在FormEvents::SUBMIT中获取用户输入数据

Forms 正在FormEvents::SUBMIT中获取用户输入数据,forms,symfony,events,form-submit,Forms,Symfony,Events,Form Submit,我正在寻找一种在formEvents::SUBMIT事件中获取用户数据的方法 我可以在formEvents::PRE_SUBMIT中使用 我可以在formEvents::POST_SUBMIT中使用 但在formEvents::SUBMIT中,我找不到位置,尽管我读到它可以访问: 我可以找到其他项目使用与PRE_SUBMIT相同的方法获取数据,例如: 或者在那里: 虽然在我的情况下,我使用不符合规范化的用户输入进行测试-$event->getForm['field']->getData发送

我正在寻找一种在formEvents::SUBMIT事件中获取用户数据的方法

我可以在formEvents::PRE_SUBMIT中使用

我可以在formEvents::POST_SUBMIT中使用

但在formEvents::SUBMIT中,我找不到位置,尽管我读到它可以访问:

我可以找到其他项目使用与PRE_SUBMIT相同的方法获取数据,例如:

或者在那里:

虽然在我的情况下,我使用不符合规范化的用户输入进行测试-$event->getForm['field']->getData发送一个没有被拒绝的用户数据的对象。 我仍然希望检索用户输入,以便: *相应更改测试数据有效性我的当前表格,该表格无法在提交后完成, *使用PRE_SUBMIT中不可用的我的表单相关对象

编辑

以下是…类型类的相关部分:

public function buildForm(FormBuilderInterface $builder, Array $options)
{
    $adminUserQuery = $options['admin_user_query'];

    $builder
        ->add('admin_user', 'model', Array( //using Propel as ORM
            'label' => FALSE,
            'multiple' => FALSE,
            'expanded' => FALSE,
            'class' => 'App\\CoreBundle\\Model\\AdminUser',
            'query' => $adminUserQuery,
            'empty_value' => 'form.placeholder.admin_user',
            'property' => 'email',
        ));
    //...

    $builder->addEventListener(
        FormEvents::PRE_SUBMIT, function (FormEvent $formEvent)
    {
        var_dump($formEvent->getData(), '---'); // prints: array(1) { ["admin_user"]=> string(17) "test@email.test" }
        var_dump($formEvent->getData()['admin_user'], '---'); // prints: string(15) "test@email.test"
        //...
    });

    $builder->addEventListener(
        FormEvents::SUBMIT, function (FormEvent $formEvent)
    {
        var_dump($formEvent->getData()); // prints: object(App\CoreBundle\Model\EventUserRole)#1659 {...}
        var_dump($formEvent->getData()->getAdminUser()); // prints: NULL

        //...
    }
    );
}

有人吗?

在FormEvents::Submit操作中,假设您正在编辑用户,则可以执行此操作:

$builder->addEventListenerFormEvents::SUBMIT,函数$event{ //您的实体/文档 $user=$event->getData; //抓住实际的形式 $form=$event->getForm; // ... };
我确实得到了表单,但在表单中找不到用户在“字段”中输入的数据。您知道吗?如果您的表单代表一个实体/文档,即用户,Symfony会自动将其设置在实体或文档中,您可以使用实体/文档的getter(即$User->getName)获取它。如果它是一个子表单,您可以使用:$form->get'accounts'->getData获取它。您是否尝试了上面的$event->getData调用?当然,我尝试了,但是Symfony不存储不符合模型的数据-这就是我所处的情况$user->getName提供通过验证的数据。我的测试数据没有。您试图访问的字段是模型中的字段吗?它只是没有通过验证?或者它是一个在您的模型中根本不存在的字段?它只是没有通过验证。实际上,我做了一个修复:在formEvents::PRE_SUBMIT中使用$formEvent->getData来获取私有变量中的输入,并在formEvents::SUBMIT中更改表单。
$builder->addEventListener(FormEvents::POST_SUBMIT, function() {
    //...
    $userInput = $event->getForm()->getViewData()
    //...
});
public function buildForm(FormBuilderInterface $builder, Array $options)
{
    $adminUserQuery = $options['admin_user_query'];

    $builder
        ->add('admin_user', 'model', Array( //using Propel as ORM
            'label' => FALSE,
            'multiple' => FALSE,
            'expanded' => FALSE,
            'class' => 'App\\CoreBundle\\Model\\AdminUser',
            'query' => $adminUserQuery,
            'empty_value' => 'form.placeholder.admin_user',
            'property' => 'email',
        ));
    //...

    $builder->addEventListener(
        FormEvents::PRE_SUBMIT, function (FormEvent $formEvent)
    {
        var_dump($formEvent->getData(), '---'); // prints: array(1) { ["admin_user"]=> string(17) "test@email.test" }
        var_dump($formEvent->getData()['admin_user'], '---'); // prints: string(15) "test@email.test"
        //...
    });

    $builder->addEventListener(
        FormEvents::SUBMIT, function (FormEvent $formEvent)
    {
        var_dump($formEvent->getData()); // prints: object(App\CoreBundle\Model\EventUserRole)#1659 {...}
        var_dump($formEvent->getData()->getAdminUser()); // prints: NULL

        //...
    }
    );
}