Bonjour,

J'ai créé une fonction roles qui vient s'éxécuter après celle de la connexion car dans ma security.yaml j'emploie default_target_path.

form_login:
                login_path: connexion
                check_path: check
                default_target_path: roles

une fois dans ma fonction roles :

    /**
     * @Route("/roles", name="roles")
     *
     */
    public function roles(UserRepository $repo) : Response
    {
        $user = $this->getUser();
        $person = $repo->findOneBy(['id' => ($user->getId())]);

                      if ($user) 
                      {

                          $role = $person->getRoles();

                          if ($role == 'ROLE_ADMIN') 
                          {
                              return $this->redirectToRoute('membres');
                          } 
                          else
                          {
                              return $this->redirectToRoute('accueil');
                          }

                  }

    }

Il m'est retourné cette erreur (dans l'URL, je suis bien sur /roles)
Return value of App\Controller\UserController::roles() must be an instance of Symfony\Component\HttpFoundation\Response, none returned

Je ne comprends pas, me manque t-il un return ?

Merci par avance pour votre temps ;)

2 réponses


bldlr
Auteur
Réponse acceptée

J'ai trouvé, il fallait écrire

    /**
     * @Route("/roles", name="roles")
     *
     */
    public function roles() 
    {
        if ($this->isGranted('ROLE_ADMIN')) {
            return $this->redirectToRoute('dashboard');
        }
        else{
            return $this->redirectToRoute('accueil'); 
        }
if ($user) 

Si ton user est null il n'y à en effet pas de return ;)
Donc fais un dump sur ton user mais je pense qu'il est null