Go кнопка назад отправляет форму - PullRequest
0 голосов
/ 19 июня 2020

У меня сейчас проблемы с формой обновления моего пользователя в Symfony. Все работает хорошо, но когда дело касается кнопки, возникает проблема.

В моем шаблоне веточки я получил следующее:

<div>
     <button onClick="window.history.back();">Go back</button>
     <button type="submit">Update</button>
</div>

Когда я нажимаю на кнопку Update, он работает, и мой пользователь обновлен, но когда я нажимаю, он тоже работает, когда я нажимаю кнопку Go back, я перенаправляюсь на предыдущую страницу, но она соответствует форме. Я не хочу, чтобы кнопка Go back отображала форму, как я могу это сделать?

Спасибо за вашу помощь.

EDIT: есть функция моего контроллера для страницы обновления

/**
* @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()
    ]);
}

1 Ответ

1 голос
/ 19 июня 2020

Джакуми и Йоши догадались!

Это произошло из-за типа кнопки. Решением было добавление type="button" к кнопке Go back.


Их ответы:

Я считаю, что тип кнопки по умолчанию - отправить. вы должны явно указать type = "button" для кнопки возврата. подробнее см. developer.mozilla.org / en-US / docs / Web / HTML / Element / button . - Jakumi

и

Вам нужно указать <button onClick="window.history.back();">Go back</button> как <button onClick="window.history.back();" type="button">Go back</button>. В противном случае по умолчанию используется sumbit, когда кнопка находится внутри <form/>. Ссылка: developer.mozilla.org / en-US / docs / Web / HTML / Element / button - Yoshi

...