bonjour,

je cherche à savoir comment récupérer l'user d'un connecté à l'espace membre avec security de symfony

6 réponses


olive140
Réponse acceptée

Un user c'est une entité, si tu regarde ton entité tu veras des getters et des setters.

$user->getId();

Bonjour c'est dans la doc https://symfony.com/doc/4.0/security.html

$user = $this->getUser();

bonjour

j'ai regardé la doc le dump me renvoie bien les données de l'utilisateur mais le problème c'est que j'ai ce message d'erreur 500

Return value of App\Controller\ProfileController::update() must be an instance of Symfony\Component\HttpFoundation\Response, none returned

<?php
namespace App\Controller;

use App\Entity\User;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\HttpFoundation\Response;

class ProfileController extends AbstractController {

    /**
     * @Route ("/profile", name="profile_home")
     */
    public function index() {

        return $this->render('profile/index.html.twig');
    }

    /**
     * @Route ("/profile/update", name="profile_update")
     */
    public function update(): Response {
        $users = $this->getUser();
        dump($users);
        /*
        $repository = $this->getDoctrine()->getRepository(User::class);
        $data = $repository->find(['id' => 11]);
        dump($data);
        return $this->render('profile/update.html.twig');
        */
    }

}

Salut,

tout simplement car Symfony attend une "Response" (puisque tu lui demandes)

 public function update(): Response {

Dans ton cas met un die(); et tu n'auras pas le pb au moins pour voir le dump, sinon retourne au moins la vue ;)

/**
     * @Route ("/profile/update", name="profile_update")
     */
    public function update(): Response {
        $users = $this->getUser();
        dump($users);
        die();
        /*
        $repository = $this->getDoctrine()->getRepository(User::class);
        $data = $repository->find(['id' => 11]);
        dump($data);
        return $this->render('profile/update.html.twig');
        */
    }

ou

/**
     * @Route ("/profile/update", name="profile_update")
     */
    public function update(): Response {
        $users = $this->getUser();
        dump($users);

        /*
        $repository = $this->getDoctrine()->getRepository(User::class);
        $data = $repository->find(['id' => 11]);
        dump($data);
        */

        return $this->render('profile/update.html.twig');

    }

en fait pour récupérer l'id j'ai fait ça mais là je n'ai pas accès à l'id vu que c'est une variable privé hum

    public function update(): Response {

        $user = $this->getUser();

        dump($user->username);
/*
        $repository = $this->getDoctrine()->getRepository(User::class);
        $data_users = $repository->findOneBy(['id' => $user->id]);

        return $this->render('profile/update.html.twig', [
            'data_users' => $data_users
        ]);
*/

    }

ah oui je comprend mieux

    public function update(): Response {

        $user = $this->getUser();

        $repository = $this->getDoctrine()->getRepository(User::class);
        $data_users = $repository->findOneBy(['id' => $user->getId()]);

        return $this->render('profile/update.html.twig', [
            'data_users' => $data_users
        ]);

    }

en tout cas merci