Я пытаюсь добавить новые поля в мою форму в зависимости от выбранного значения из списка. Моя проблема возникает при нажатии «отправить» , после того, как код запускает метод 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'
}
Заранее спасибо за вашу помощь!