表格Symfony 2.3订阅

时间:2015-06-10 16:42:19

标签: php forms symfony

我正在用Symfony 2.3做一个表格来订阅时事通讯。 表单在自己的模板(newsletter.html.twig)中运行良好。

我的控制器操作:

public function newsletterAction(Request $request)
{
    $newsletter = new Newsletter();

    $form = $this->createFormBuilder($newsletter)
        ->add('email', 'email')
        ->add('submit', 'submit')
        ->getForm();

    $form->handleRequest($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($newsletter);
        $em->flush();

        $request->getSession()->getFlashBag()->add('notice', 'Vous venez de    vous enregistré à la Newsletter d\'Emoovio.');
    }
    return $this->render('MyBundle:Global:newsletter.html.twig', array(
        'form' => $form->createView(),
    ));
}

我的模板在哪里工作(newsletter.html.twig):

{{ form(form) }}

我的模板不起作用(index.html.twig):

////
{% render (controller("EmooviofrontBundle:Global:newsletter")) %}
////

表单已显示但不起作用。可能是错过了什么。有没有人有同样的问题,可以解释我。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为当您提交表单时,POST数据会到达indexAction。此操作不会验证您的表单并呈现正常页面。渲染它时会调用Global:newsletterAction,但只是在没有表单数据的GET方法中作为子请求。

您可以尝试将动作应用于formdata

    $form = $this->createFormBuilder($newsletter, array(
        'action' => $this->generateUrl('global_newsletter'),
        'method' => 'POST',
    ))
   ->add('email', 'email')
   ->add('submit', 'submit')
   ->getForm();