提交表单并发现错误时,页面刷新仍然在顶部,但我的表单在底部
Upon form submit and errors are found the page refresh remains at the top but my form is at the bottom
我正在创建一个简单的传呼机,其好处在顶部和中间,注册在底部。
我目前正在测试表单验证。当我输入无效信息以测试正确处理控制器的错误时 returns 列出错误的同一页面,但是该页面返回到最顶部,用户将看不到任何错误消息。他们可能实际上认为一切都很顺利。
我可以选择将表单移动到新页面,但我想先看看是否可以将焦点返回到表单当前所在的页面底部。
我不想在这里用 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(),));
}
一个简单的解决方案是使用锚。
示例:
您的表单可以使用 id 属性,您的表单操作可以在 url:
中使用此 id
<form id="my-form" action="{{ path('my_route') }}#my-form" ...>
...
</form>
现在,如果您提交表单时出现错误,浏览器应跳转到该表单。
旁注:滚动是客户端的事情,因此 PHP 无法帮助您。只有 JavaScript 或这个简单的基于哈希的解决方案。
我正在创建一个简单的传呼机,其好处在顶部和中间,注册在底部。
我目前正在测试表单验证。当我输入无效信息以测试正确处理控制器的错误时 returns 列出错误的同一页面,但是该页面返回到最顶部,用户将看不到任何错误消息。他们可能实际上认为一切都很顺利。
我可以选择将表单移动到新页面,但我想先看看是否可以将焦点返回到表单当前所在的页面底部。
我不想在这里用 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(),));
}
一个简单的解决方案是使用锚。
示例:
您的表单可以使用 id 属性,您的表单操作可以在 url:
中使用此 id<form id="my-form" action="{{ path('my_route') }}#my-form" ...>
...
</form>
现在,如果您提交表单时出现错误,浏览器应跳转到该表单。
旁注:滚动是客户端的事情,因此 PHP 无法帮助您。只有 JavaScript 或这个简单的基于哈希的解决方案。