返回按钮提交表单
Go back button submits the form
我目前在 Symfony 中遇到用户更新表单的问题。
一切正常,但在按钮部分出现问题。
在我的树枝模板中,我得到了这个:
<div>
<button onClick="window.history.back();">Go back</button>
<button type="submit">Update</button>
</div>
当我点击 Update
按钮时它工作并且我的用户被更新但是当我点击它时当我点击 Go back
按钮时它也工作,我被重定向到上一页但它总结了表格。
我不希望 Go back
按钮对表单进行汇总,我该怎么做?
感谢您的帮助。
编辑:
更新页面有我的控制器功能
/**
* @Route("/admin/users/{id}/update", name="usersUpdate", methods={"GET","POST"})
* @IsGranted("ROLE_ADMIN")
*/
public function usersUpdate(User $user, Request $request)
{
$form = $this->createForm(RegistrationFormType::class, $user);
$form->remove('plainPassword');
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
$this->container->get('session')->getFlashBag()->add('validUpdate', 'L\'utilisateur a été mis a jour.');
return $this->redirectToRoute('users');
}
return $this->render('admin/users/update.html.twig', [
'registrationForm' => $form->createView()
]);
}
Jakumi 和 Yoshi 想通了!
这是由于按钮的类型。
将 type="button"
添加到 Go back
按钮是解决方案。
他们的回答:
I believe the default type of a button is submit. you should explicitly state type="button" for the back button. see developer.mozilla.org/en-US/docs/Web/HTML/Element/button for details. - Jakumi
和
You need to specify <button onClick="window.history.back();">Go back</button>
as <button onClick="window.history.back();" type="button">Go back</button>
. Otherwise it defaults to sumbit
when the button is placed inside <form/>
. Ref: developer.mozilla.org/en-US/docs/Web/HTML/Element/button - Yoshi
我目前在 Symfony 中遇到用户更新表单的问题。 一切正常,但在按钮部分出现问题。
在我的树枝模板中,我得到了这个:
<div>
<button onClick="window.history.back();">Go back</button>
<button type="submit">Update</button>
</div>
当我点击 Update
按钮时它工作并且我的用户被更新但是当我点击它时当我点击 Go back
按钮时它也工作,我被重定向到上一页但它总结了表格。
我不希望 Go back
按钮对表单进行汇总,我该怎么做?
感谢您的帮助。
编辑: 更新页面有我的控制器功能
/**
* @Route("/admin/users/{id}/update", name="usersUpdate", methods={"GET","POST"})
* @IsGranted("ROLE_ADMIN")
*/
public function usersUpdate(User $user, Request $request)
{
$form = $this->createForm(RegistrationFormType::class, $user);
$form->remove('plainPassword');
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
$this->container->get('session')->getFlashBag()->add('validUpdate', 'L\'utilisateur a été mis a jour.');
return $this->redirectToRoute('users');
}
return $this->render('admin/users/update.html.twig', [
'registrationForm' => $form->createView()
]);
}
Jakumi 和 Yoshi 想通了!
这是由于按钮的类型。
将 type="button"
添加到 Go back
按钮是解决方案。
他们的回答:
I believe the default type of a button is submit. you should explicitly state type="button" for the back button. see developer.mozilla.org/en-US/docs/Web/HTML/Element/button for details. - Jakumi
和
You need to specify
<button onClick="window.history.back();">Go back</button>
as<button onClick="window.history.back();" type="button">Go back</button>
. Otherwise it defaults tosumbit
when the button is placed inside<form/>
. Ref: developer.mozilla.org/en-US/docs/Web/HTML/Element/button - Yoshi