【发布时间】:2020-01-17 08:52:52
【问题描述】:
我正在尝试根据从列表中选择的值将新字段添加到我的表单中。我的问题是在点击“提交”时,代码运行eventListener方法(其中添加了新字段)后,控制器得到了没有新字段的表单!我很难理解问题出在哪里。
这是我的表单生成器:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('DataTypeList', ChoiceType::class, [
'required' => false,
'mapped' => false,
'choices' => [
"String Type" => "DataTypeString",
"Monetary Type" => "DataTypeMonetaryNumber"
],
'attr' => ['style' => 'width: 50vw'],
]);
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
if ($data['DataTypeList'] === "DataTypeString") {
$form->add("DataTypeString", TextType::class, [
'required' => true,
'mapped' => false,
'error_bubbling' => true,
'attr' => [
'placeholder' => 'This is an example',
'style' => 'width: 50vw'
]
]);
}
});
}
这是我的控制器:
$form = $this->createForm('data\AddType', $data, array(
'action' => $this->generateUrl('data_add', [
'dataKey_id' => $data->getDataAccessKey()->getId(),
'returnRoute' => $returnRoute
]),
'method' => 'POST',
));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//Here I make a dump() on $request that shows that my form only contains 'DataTypeList'
}
提前感谢您的帮助!
【问题讨论】:
标签: forms symfony symfony-3.4