Bonjour
Je travaille sur ma page de profil, pour changer mon adresse courriel, mon mot de passe, etc.
Donc lorsque je me trompe, si je met un mot de passe différent de l’initial, je vais avoir un message d’erreur, si le courriel et < 2 caractères, idem, message d’erreur, etc. mais je ne sais pas comment afficher un message si tout est bon que le courriel a bien été mis à jour.
J’utilise Symfony 5 et PHP 7.
Mes pages :
src/Controller/ProfileController.php
<?php
namespace App\Controller;
use App\Form\ChangeEmailType;
use App\Form\ChangePasswordType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class ProfileController extends AbstractController
{
/**
* @Route("/profile", name="profile")
*/
public function index(
Request $request,
UserPasswordEncoderInterface $passwordEncoder,
EntityManagerInterface $entityManager
): Response
{
$user = $this->getUser();
$formEmail = $this->createForm(ChangeEmailType::class, $user);
$formEmail->handleRequest($request);
$formPassword = $this->createForm(ChangePasswordType::class, $user);
$formPassword->handleRequest($request);
if ($formEmail->isSubmitted() && $formEmail->isValid()) {
$entityManager->flush();
}
if ($formPassword->isSubmitted() && $formPassword->isValid()) {
$user->setPassword(
$passwordEncoder->encodePassword(
$user,
$formPassword->get('plainPassword')->getData()
)
);
$entityManager->flush();
}
return $this->render('profile/index.html.twig', [
'emailForm' => $formEmail->createView(),
'passwordForm' => $formPassword->createView(),
]);
}
}
templates/profile/index.html.twig
{{ form_start(passwordForm) }}
<div class="block-button inputProfile">
{{ form_row(passwordForm.plainPassword , {'attr': {'placeholder': 'Mot de passe'}}) }}
</div>
<button type="submit" class="btn">Mettre à jour</button>
{{ form_end(passwordForm) }}
Je dois passer par le controller si je suppose, mais je ne sais pas trop comment.
Si vous avez besoin d’autres choses n’hésitez pas
Cordialement
+0
-0