php – symfony ajax表单动态修改

我有以下表格,其中包含来自数据库的数据,它仍然是WIP(我缺少一些我尚未添加的字段).
表单在第一个选择中加载数据并基于该选择我使用ajax来填充第二个选择,其中选项基于第一个选择(基本上是与所选值的关联).从那里再次选择具有某些选项等等,最后当我提交表单时,我想根据数据从数据库生成报告.
目前我被困在第二个领域,因为我总是得到一个错误

This value is not valid.

表单类:

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('survey', EntityType::class, [
            'class' => SurveyManager::class,
            'placeholder' => 'Choose option',
            'attr' => [
                'class' => 'field-change',
            ],
        ])
        ->add('headquarter', ChoiceType::class, [
            'choices' => [],
        ])
        ->add('submit', SubmitType::class, [
            'label' => 'Save',
        ])
    ;
}

我不确定如何修复错误或我应该如何处理这种类型的表单.你能救我一下吗?

基于答案我做到了这一点

$builder->addEventListener(
    FormEvents::PRE_SUBMIT,
    function (FormEvent $event) {
        $form = $event->getForm();

        $data = $event->getData();

        $form->add('headquarter', EntityType::class, [
            'class' => HeadQuarterManager::class,
            'query_builder' => function(HeadQuarterManagerRepository $er) {

                return $er->getHeadquarter($data['survey']);
            },
        ]);
    }
);

但是我收到了这个错误

Notice: Undefined variable: data 

不确定如何将数据传递给getHeadquarter方法,所以我可以返回一个id =>的数组选择的名称.

解决方法:

当您运行函数$form-> isValid()时,它会检查它在buildForm函数中构建的表单.任何不存在的额外字段/值都将导致此错误.

您可以使用form events更改此行为.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...