我正在尝试为symfony 4中的用户创建重置密码,我有这个错误
找不到“GET / change-password”的路由:方法不允许(允许: POST)
我正在寻求帮助
我的控制器:
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())
);
}
}
答案 0 :(得分:2)
您必须将@Method(" POST")更改为@Method({" GET"," POST"}),因为您的操作用于显示并处理表格。
答案 1 :(得分:0)
我认为GET方法不是重设密码的好方法,您可以在Methode批注中添加GET来修复它,但这是不好的方法。
好的方法是通过POST方法发送数据并在$ request中处理
答案 2 :(得分:-2)
@Route("/change-password", name="change_password"
注意定义...-!== _