2016-12-03 92 views
0

在我的基地树枝文件我渲染我的页脚。在页脚中,这些是注册表格,用于下载简报。这是在基地树枝渲染电话。Symfony2的表单验证redered枝杈

{{ render(controller('MyBundle:Global:footer')) }} 

通过此页脚控制器,我正在渲染页脚。特此控制器代码:

/** 
* @Route("/{_locale}/newsletter/", defaults={"_locale": "nl"}, requirements={"_locale": "nl|en|de"}, name="_newsletter") 
*/ 
public function footerAction(Request $request) 
{ 
    $form = $this->createForm(new NewsletterType()); 
    $form->handleRequest($request); 

    if ($form->isValid()) { 
     return $this->redirectToRoute('_404'); 
    } else { 
     return $this->render('MyBundle:global:footer.html.twig', array('form' => $form->createView())); 
    } 
} 

如果我提交表单只有一个电子邮件的输入是什么,一个提交按钮,然后这条路被触发,只是形式不验证。在这个测试的例子中,我想将它重定向到404页面。但是它仅仅是重复页脚?

+0

你没有得到错误,因为那些没有被请求...你包括控制器所以你提出了一个子请求:https://knpuniversity.com/screencast/symfony-journey/sub-请求内部 – barat

回答

1

我假设你呈现的许多页面这种形式,因为你把它在页脚。任何形式的你需要在表单元素的action属性e.g

<form method="post" action="somewhere"> 

和动作属性的值就是如果有人点击发送按钮数据将到达。

我的解决方案是添加一个额外的页面,显示相同的形式。就像你已经习惯了Symfony并且在页脚中呈现相同的表单并且确保你的表单用相同的表单提交给新页面。 例如现在

$form->setAction($this->generateUrl('target_route')) 

,如果有人提交表单就会被发送到页面相同的形式,如果有任何错误,他会看到他们此页面上。