我想在一個控制器中使用兩種形式。他們每個人都使用不同的實體。每次我嘗試使用第二種形式,第一種形式執行。如何使它正確?在Symfony3中的一個控制器中的多個表格
$document = new Document();
$form2 = $this->createFormBuilder($document)
->add('file', FileType::class, array('label' => 'Wgraj plik '))
->add('name', TextType::class, array('label' => 'Nazwa dodawanego pliku'))
->add('toFill', CheckboxType::class, array('label' => 'Do wypełnienia?', 'required' => false))
->add('save', SubmitType::class, array('label' => 'Dodaj plik'))
->getForm();
if ($form2->handleRequest($request)->isValid() && $form2->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$document->upload();
$document->setFormId($id);
$em->persist($document);
$em->flush();
}
$raportFiles = new RaportFiles();
$formRaportsInput = $this->createFormBuilder($raportFiles)
->add('file', FileType::class, array('label' => 'Wgraj plik '))
->add('name', TextType::class, array('label' => 'Nazwa dodawanego pliku'))
->add('save', SubmitType::class, array('label' => 'Dodaj plik'))
->getForm();
if ($formRaportsInput->handleRequest($request)->isValid()) {
$em = $this->getDoctrine()->getManager();
$raportFiles->upload();
$raportFiles->setFormId($id);
$em->persist($raportFiles);
$em->flush();
}
我嘗試使用$this->get('form.factory')->createNamedBuilder()
來代替,但我無法讓它工作。
回到基本。您的瀏覽器一次只會提交一份表格,因此嘗試在一個操作中處理兩個或更多表格可能會變得混亂。您最好的選擇可能是針對每個表單進行單獨的POST操作。 – Cerad
@Cerad,他不想一次提交兩份表格,但只能提交其中的一份。問題是他的代碼認爲總是提交第一個表單。 –
@dragoste,的確如此。他的代碼中沒有任何內容來區分這兩種形式。將操作方法設置爲兩種不同的方法會使問題消失。 – Cerad