Bonjour à tous,

Je n'arrive pas à comprendre pour quelle raison le controller ci dessous ne m'affiche pas les méthodes de la classe Users dont il est dépendant, notamment les méthodes "setPassword()" et ne reconnaît pas la variable "$user" dans la méthode "hashPassword() non plus ...

Est-ce que je me trompe dans l'injection de dépendances ?

J'ai bien mon User qui s'affiche quand je fais un dd($user) ou un ->getUser() mais je ne peux ensuite chaîner un get->firstName() ou autre méthode existante dans la classe ...

Merci pour vos réponses

UsersController.php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php

namespace App\Controller;

use App\Entity\Annonces;
use App\Entity\Users;
use App\Form\AnnoncesType;
use App\Form\EditProfileType;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;

class UsersController extends AbstractController
{
    #[Route('/users', name: 'users')]
    public function index(Users $user): Response
    {
        return $this->render('users/index.html.twig');
    }

    #[Route('/users/annonces/ajout', name: 'users_annonces_ajout')]
    public function ajoutAnnonce(Request $request, ManagerRegistry $doctrine): Response
    {
        $annonce = new Annonces();
        $form = $this->createForm(AnnoncesType::class, $annonce);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {

            $annonce->setUser($this->getUser());
            $annonce->setActive(false);
            $em = $doctrine->getManager();
            $em->persist($annonce);
            $em->flush();

            return $this->redirectToRoute('users');
        }

        return $this->render('users/annonces/ajout.html.twig', [
            'form' => $form->createView(),
        ]);
    }

    #[Route('/users/profil/modifier', name: 'users_profil_modifier')]
    public function editProfile(Request $request, ManagerRegistry $doctrine): Response
    {
        $user = $this->getUser();
        $form = $this->createForm(EditProfileType::class, $user);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {

            $em = $doctrine->getManager();
            $em->persist($user);
            $em->flush();
            $this->addFlash('message', 'profil mis à jour.');

            return $this->redirectToRoute('users');
        }

        return $this->render('users/editprofile.html.twig', [
            'form' => $form->createView(),
        ]);
    }
    #[Route('/users/password/modifier', name: 'users_password_modifier')]
    public function editPassword(Request $request, ManagerRegistry $manager, UserPasswordHasherInterface $passwordHasher,UserInterface $user): Response
    {
        dd($user);
        if ($request->isMethod('POST')) {

            $em = $manager->getManager();                 

            if ($request->request->get('password') == $request->request->get('password2')) {

                $user->setPassword($passwordHasher->hashPassword($user, $request->request->get('password')));
                
                $em->flush();
                
                $this->addFlash('message', 'Mot de passe mis à jour avec succès');

                return $this->redirectToRoute('users');
            } else {
                $this->addFlash('error', 'Les deux mots de passe ne sont pas identiques');
            }
        }
        return $this->render('users/editpassword.html.twig');
    }

    #[Route('/users/data',name:'users_data')]
    public function usersData(){
        return $this->render("users/data.html.twig");
    }
}