【发布时间】:2018-09-11 01:33:04
【问题描述】:
我正在尝试为 symfony 4 中的用户创建重置密码,我遇到了这个错误
找不到“GET /change-password”的路由:不允许方法(允许: 发布)
我正在寻求帮助
我的控制器:
class ChangepasswordController extends Controller
{
private $oldpassword;
private $newpassword;
/**
* @Route("/change-password", name="change_password", defaults={"email=null"})
* @Method("POST")
* @param Request $request
* @param AuthenticationUtils $authenticationUtils
* @param UserPasswordEncoderInterface $passwordEncoder
* @param $email
* @return Response
*/
public function ChangepasswordAction(Request $request, UserPasswordEncoderInterface $passwordEncoder, $email)
{
$user = new User();
$form = $this->createForm(ChangepasswordType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$user = $this->getDoctrine()->getRepository(User::class)->find($email);
} catch (ExceptionInterface $e) {
$this->addFlash('danger', "Cet email n'existe pas.");
}
//Recuperer le nouveau mot de passe tapé par l'utilisateur
$newpassword = $passwordEncoder->encodePassword($user, $user->getPassword());
//recuperer l'ancien mot de passe dans la base de donnéees
$oldpassword = $user->getPassword();
if ($newpassword = $oldpassword) {
$this->addFlash('danger', "Ce mot de passe est dejà utilisé.");
} else {
$user->setPassword($newpassword);
}
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
$this->addFlash('success', 'votre mot de passe est bien réinitialisé');
# Redirection sur la page de connexion
return $this->redirectToRoute('connexion');
}
return $this->render(
'security/changemotdepasse.html.twig',
array('form' => $form->createView())
);
}
}
【问题讨论】:
标签: symfony-forms symfony4 reset-password