呈现有错误的表单后如何重定向到页面上的位置

时间:2019-01-03 15:54:10

标签: php symfony validation redirect twig

在symfony / twig中,我有一个联系页面,其中包含可以提交的姓名和电子邮件地址。输入已验证。表单字段位于页面底部。如果提交了表单,我想重定向到页面底部以及表单显示错误或成功消息的位置。在成功的情况下,我设法在控制器中使用;

if ($form->isValid()) {
            .... code to send mail
            return $this->redirect($request->getUri()."#form");
        }

如果表单无效,则页面呈现如下:

        else {
            $request->getSession()->getFlashBag()->add('error', 'Message not send!');
            return $this->render('default/index.html.twig', array(
                'form' => $form->createView(),
            ));
        }

,如果表单无效,它将返回页面顶部。 我想返回到表单部分所在的页面(url /#form)的底部,并且可以看到错误,因此查看者会看到由于错误而未发送邮件。是否可以在呈现表单时添加锚点? (而不是使用javascript)。

1 个答案:

答案 0 :(得分:0)

如果您使用redirectToUrl,那么您将丢失表单数据,因此您可以使用简单的jquery代码执行此操作:

{% if not form.vars.valid %}
    <script>
        $(document).ready(function () {
        $('html,body').animate({
            scrollTop: $('#form').offset().top
        }, 1000);
        });
    </script>
{% endif %}