Я использую два типа форм для одной страницы в моем проекте Symfony. Я делаю это, чтобы пользователь мог выбирать между двумя вариантами создания нового документа
Как устроена страница: есть несколько текстовых полей, которые нужно заполнить. Все они относятся к моему DocumentCreateType, а также включают правую часть выбора (выберите IATA вручную), которую вы видите на картинке. Мой второй тип формы (UploadProfileType) содержит те же три раскрывающихся списка плюс дополнительный (рынки, канал 1 и продукты), но на левом сайте по выбору (используйте профили загрузки).
Таким образом, в зависимости от того, что выбрал пользователь, необходимо отправить только DocumentCreateType или оба типа формы должны быть отправлены и сохранены.
Как я могу заставить это работать в моем контроллере? Пока мой контроллер выглядит так, но он неправильно сохраняет данные.
$upForm = $this->createForm(UploadProfileType::class, $document, array('user' => $currentuser));
$form = $this->createForm(DocumentCreateType::class, $document);
$form->handleRequest($request);
$upForm->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
...
}
ChoiceType для выбора между профилем загрузки и IATA выглядит так и обрабатывается javascript:
$builder
->add('use_upload_profile', ChoiceType::class, array(
'choices' => array(
true => 'label.use_upload_profile',
false => 'label.select_iatas_manually'
),
'mapped' => false,
'expanded' => true,
'label' => false,
'data' => true,
'translation_domain' => 'Documents'))
;
}