繁体   English   中英

Symfony2表单验证不在子渲染树枝中

[英]Symfony2 form validation not in sub rendered twig

在我的基本树枝文件中,我正在渲染页脚。 在页脚中,这些是用于订阅新闻通讯的注册表。 这是基本树枝中的de render调用。

{{ 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元素中添加一个action属性,例如

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

action属性的值是如果有人单击“发送”按钮,数据将到达的位置。

我的解决方案是添加一个显示相同表单的额外页面。 就像您习惯使用Symfony一样,然后在页脚中呈现相同的表单,并确保您的表单使用相同的表单提交到新页面。 例如

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM