在表单提交并发现错误后,页面刷新仍然位于顶部,但我的表单位于底部

时间:2015-01-29 15:41:49

标签: forms symfony

我创建了一个简单的一个寻呼机,其优势在于顶部和中间,而在底部则是注册。

我目前正在测试表单验证。当我输入无效信息来测试错误处理时,控制器正确返回列出错误的同一页面,但页面返回到最顶层,用户将看不到有任何错误消息。事实上,他们可能认为一切顺利。

我可以选择将表单移动到新页面,但我想首先看看是否可以将焦点重新放在当前表单所在页面的底部。

我不希望通过javascript和变通办法进入这里的重大事业。如果没有太多努力就可以实现,但如果只是将注册表单移动到另一个页面更容易,那我就去那里。

码?我不确定这里的代码是什么。控制器是否控制页面滚动?

控制器:

public function indexAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();

    $signUp = new SignUp();
    $form = $this->createForm(new SignUpType(), $signUp);

    $form->handleRequest($request);

    if ($form->isValid()) {
        $em->persist($signUp);
        $em->flush();

        return $this->redirect($this->generateUrl('japps_lfm_default_thanks'));
    }

    return $this->render('JAppsLFMBundle:AB:a.html.twig', array('form' => $form->createView(),));
}

1 个答案:

答案 0 :(得分:0)

简单解决方案是使用锚点。

示例:

您的表单可以使用id属性,您的表单操作可以在网址中使用此ID:

<form id="my-form" action="{{ path('my_route') }}#my-form" ...>
...
</form>

现在,如果您提交表单并且出现错误,浏览器应跳转到表单。

旁注:滚动是客户端的事情,因此PHP无法帮助您。只有JavaScript或这种基于哈希的简单解决方案。