在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)。
答案 0 :(得分:0)
如果您使用redirectToUrl,那么您将丢失表单数据,因此您可以使用简单的jquery代码执行此操作:
{% if not form.vars.valid %}
<script>
$(document).ready(function () {
$('html,body').animate({
scrollTop: $('#form').offset().top
}, 1000);
});
</script>
{% endif %}