Symfony 4.1 2形式

时间:2018-10-19 11:19:07

标签: symfony

我正在使用最新版本的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上还有另一个好的解决方案吗?

也许将表格更改为服务并从树枝中调用它?

我不知道如何改善它。

谢谢!

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上进行了测试。

没有任何问题