Symfony3.4 - POST_SUBMIT事件上的预填充字段

arn*_*rno 10 php symfony-3.4

我有一个带有联系人列表的表单.我想在提交后显示所选联系人值字段"名字" .我的问题是该字段出现但我无法设置好的数据,该字段始终保持为空.

public function buildForm(FormBuilderInterface $builder, array $options)
{

    $builder
        ->add('contacts', ChoiceType::class, [
            'label'       => 'Contact',
            'placeholder' => 'Choose a contact',
            'choices'     => $this->getContacts(),
            'mapped'      => false,
        ])
        ->setMethod('POST')
    ;

    $builder->get('contacts')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {

        $contactId     = $event->getData();
        $parentForm    = $event->getForm()->getParent();

        $contactEntity = $exampleEm->getrepository(Contact::class)->find($contactId);
        $firstName     = $contactEntity->getFirstName();

        // where can I set the 'contactFirstname' data ?

        $parentForm
            ->add('contactFirstname', TextType::class, [
                'label' => 'First name',
            ]);
    })
    ;
}
Run Code Online (Sandbox Code Playgroud)

如何输入正确的数据以使字段显示为预填?

编辑: 我找到了一个方法,但并不可怕:

$parentForm
            ->add('contactFirstname', TextType::class, [
                'label'         => 'First name',
                'empty_data'    => $firstName,
        ]);
Run Code Online (Sandbox Code Playgroud)

('data' => $firstName不要为我工作.)

$parentForm->get('contactFirstname')->setData($firstName); 也不起作用

Ste*_*ine 1

您不能简单地设置 TextType 字段的“数据”选项吗?

// ...

$contactEntity = $exampleEm->getrepository(Contact::class)->find($contactId);
$firstName     = $contactEntity->getFirstName();

$parentForm
    ->add('contactFirstname', TextType::class, [
         'label' => 'First name',
         'data' => $firstname //here?
     ]);
Run Code Online (Sandbox Code Playgroud)

编辑:

根据github 上提交的这篇文章,需要提交表单字段才能更改其数据。

在他的解决方案之一中,他像您一样使用“empty_data”。

在另一个中,他将字段添加到构建器中。用显示隐藏它:“none”;直到数据提交。