Php 在用户在“选择”字段中选择内容后显示新表单字段

Php 在用户在“选择”字段中选择内容后显示新表单字段,php,symfony,Php,Symfony,我用Symfony表单类型制作了一个简单表单 public function buildForm(FormBuilderInterface $builder, array $options) { $factory = $builder->getFormFactory(); $domainsNamesTransformer = new DomainsNamesTransformer(); $builder->add( $builder->

我用Symfony表单类型制作了一个简单表单

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $factory = $builder->getFormFactory();
    $domainsNamesTransformer = new DomainsNamesTransformer();

    $builder->add(
        $builder->create('domains', TextareaType::class, [
            'label' => 'form.names',
            'translation_domain' => 'global',
            'constraints' => [
                new Assert\NotBlank(),
            ],
        ])
        ->addModelTransformer($domainsNamesTransformer)
    );

    // Limit to user servers
    $builder->add('server', EntityServerType::class, [
        'user' => $options['user'],
        'nadmin_compliant' => true,
        'ip_network' => IpV4::NETWORK_PUBLIC,
        'required' => true,
        'constraints' => [
            new Assert\NotBlank(),
        ],
    ]);

    // Ask if user want a database
    $askDatabase = function (FormInterface $form, $server) {
        if ($server != null && $server->getMysqlServer === true) {
            $form->add('database', CheckboxType::class, [
                'label' => 'domain.form.associated_databases',
                'translation_domain' => 'front',
                'required' => false,
            ]);
        }
    };
}
当用户在
server
字段中选择一个选项时,我试图显示一个新字段。 所以我做了一个
eventListener
来做这个,但是当我选择一个选项时,没有任何附加

    $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($askDatabase) {
        $form = $event->getForm();
        $data = $event->getData();

        if (array_key_exists('server', $data)) {
            $askDatabase($form, $data['server']);
        }
    });
我还尝试了
POST\u SET\u DATA
PRE\u SUBMIT
,但没有附加任何内容

编辑

数组键
server
存在于
$data
中,因为当我转储它时,在加载页面时会得到
null

这在
eventListener
中是可行的还是错误的方法? 我该怎么做


感谢您的帮助。

何时要添加附加字段?当用户编辑此数据时,或当用户添加新实体时,
服务器
字段是一个带有服务器列表的选择字段,因此当用户在此列表中选择一个服务器时,将添加新字段。这仅在您传输(在用户选择某个服务器后)时才可能进行通过ajax将整个序列化表单转换为控制器操作,并让控制器操作操作表单,然后您必须通过json将表单传输回,并在需要添加附加字段时用更新的表单替换旧表单?当用户编辑此数据时,或当用户添加新实体时,
服务器
字段是一个带有服务器列表的选择字段,因此当用户在此列表中选择一个服务器时,将添加新字段。这仅在您传输(在用户选择某个服务器后)时才可能进行通过ajax将整个序列化表单转换为控制器操作,并让控制器操作操作表单,然后必须通过json将表单传输回,并用更新的表单替换旧表单