Symfony2形式验证不在子渲染的树枝中



在我的基本树枝文件中,我正在渲染页脚。在页脚中,这是向新闻通讯订阅的注册形式。这是基本树枝中的渲染呼叫。

{{ 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页。但这只是重新录制了页脚?

我假设您在许多页面上呈现此表格,因为您将其放在页脚中。作为任何形式,您都需要形式元素中的操作属性,例如

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

,操作属性的值是如果有人键入发送按钮,您的数据将到达。

我的解决方案是添加一个额外的页面,显示相同的表格。就像您习惯于与Symfony一起使用相同的形式,并确保您的表格以相同的形式提交给新页面。例如

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

现在,如果有人提交表格,它将以相同的表格发送到页面,如果有任何错误,他会在此页面上看到它们。

最新更新