返回按钮提交表单

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