Я хотел бы создать страницу, которая позволяет пользователю изменять свою личную информацию. Я хочу, чтобы он ввел свой текущий пароль, чтобы изменить любую информацию.
Я создал форму на основе подключенного пользователя, когда форма отправлена и действительна. Я хочу проверить, действителен ли пароль, с помощью функции isPasswordValid () моего passwordEncoder.
My Проблема в том, что когда эта функция вызывается с параметром $ user, она всегда возвращает false. Я обнаружил, откуда возникает эта проблема, потому что $ user использовался в качестве параметра, который был изменен при отправке формы. Я попытался объявить другую переменную для хранения моего Первоначального пользователя (например, $ dbUser) и использовать другую для создания экземпляра формы, но когда я выгружаю $ dbUser, она была изменена, и я не знаю, почему ...
Переменная не должна быть изменена после отправки, потому что она никогда не используется ... Я не могу найти, что я делаю неправильно ...
/**
* @Route("/mes-infos", name="account_infos")
*/
public function showMyInfos(Request $request, UserRepository $userRepo)
{
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
$user = $this->getUser();
// $dbUser = $userRepo->findOneBy(['id' => 13]);
$form = $this->createForm(UserModificationType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$enteredPassword = $request->request->get('user_modification')['plainPassword'];
$passwordEncoder = $this->passwordEncoder;
$manager = $this->getDoctrine()->getManager();
if ($passwordEncoder->isPasswordValid($user, $enteredPassword)) {
dd('it works!!!!!');
// $manager->persist($user);
// $manager->flush();
} else {
dd('It\'s not!!!!');
}
}
return $this->render('account/myaccount-infos.html.twig', [
'form' => $form->createView()
]);
}