我正在使用最新版本的symfony 4.1
在我的主页上,我有2种表格。是同一个人。但位置不同。
一个在顶部,一个在底部。
所以直到现在我还是与Name builder建立了工厂
# form top
$form1 = $this->get('form.factory')->createNamedBuilder('order_form', ContactType::class)->getForm();
$form1->handleRequest($request);
if ($form1->isSubmitted() && $form1->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($form1->getData());
$em->flush();
$this->addFlash('notice', 'message');
}
# form layout
$form2 = $this->get('form.factory')->createNamedBuilder('quick_contact', ContactType::class)->getForm();
$form2->handleRequest($request);
if ($form2->isSubmitted() && $form2->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($form2->getData());
$em->flush();
$this->addFlash('notice', 'message');
}
return $this->render('Site/HomePage.html.twig', ['form1' => $form1->createView(), 'form2' => $form2->createView()]);
}
在symfony 4.1上还有另一个好的解决方案吗?
也许将表格更改为服务并从树枝中调用它?
我不知道如何改善它。
谢谢!
答案 0 :(得分:0)
您可以通过这种方式做到:
public function HomePage(Request $request)
{
# form top
$form = $this->createForm(ContactType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($form->getData());
$em->flush();
$this->addFlash('notice', 'message');
}
return $this->render('Site/HomePage.html.twig', ['form' => $form->createView(), 'form2' => $form->createView()]);
}
在树枝上:
表格1:
{{ form_start(form) }}
{{ form_end(form) }}
表格2:
{{ form_start(form2) }}
{{ form_end(form2) }}
在我的Symfony上进行了测试。
没有任何问题