我正在用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(),
));
}
{{ form(form) }}
////
{% render (controller("EmooviofrontBundle:Global:newsletter")) %}
////
表单已显示但不起作用。可能是错过了什么。有没有人有同样的问题,可以解释我。谢谢。
答案 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();