我有一个带有联系人列表的表单.我想在提交后显示所选联系人值字段"名字" .我的问题是该字段出现但我无法设置好的数据,该字段始终保持为空.
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); 也不起作用
您不能简单地设置 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”;直到数据提交。