我有以下表格,其中包含来自数据库的数据,它仍然是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更改此行为.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。