我有以下表单,它包含数据库中的数据,它仍然是WIP(我缺少一些我没有添加的字段)。 表单在第一个选择中加载数据,并基于该选择,我使用ajax根据第一个选择(基本上与选定值的关联)填充第二个选择。并从那里再次选择某些选项等等,并在最后提交表单时,我想根据数据从数据库生成报告。 目前我很坚持的第二场,因为我总是得到一个错误:symfony 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 =>名称数组。
我想你会说... :-D问题是我从来没有使用过,我没太明白该文档:( –
@LS从它你需要的声音选项3 http://symfony.com/doc/current/form/dynamic_form_modification.html#form-events-submitted-data当你完成它,一旦你得到用于它 – Rooneyl
好吧,让我看看那个部分放一些代码,我们会从那里看到我做了什么愚蠢的事情:D –