es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Establecer una variable de sesión pero no se puede acceder a ella desde otro controlador.

Estoy tratando de establecer una variable de sesión cuando inicio sesión, lo cual parece funcionar, pero no puedo obtener esta variable en otra función de otro controlador.

(SecurityController.php)

public function login(RequestStack $requestStack): Response
{
    //$session = $requestStack->getSession();
    $session = $requestStack->getCurrentRequest()->getSession();
    $session->set('uuid_user', $user->getUuid());

    $this->logger->info($session->get('uuid_user')); //Puedo acceder a esto y funciona aquí
}

(CityController.php)

public function getCity(RequestStack $requestStack): Response
{
    //$session = $requestStack->getSession();
    $session = $requestStack->getCurrentRequest()->getSession();
    $uuidUser = $session->get('uuid_user');

    $this->logger->info($uuidUser); //No puedo acceder a esto aquí, solo devuelve null
}

¿Tienes alguna idea de qué estoy haciendo mal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con el hecho de que la función getCity no se llama inmediatamente después de la función login. Esto significa que es posible que la variable de sesión no se haya establecido aún cuando getCity intenta recuperarla.

    Para asegurarte de que la variable de sesión se establezca antes de intentar recuperarla en otra función/controlador, podrías intentar añadir una redirección después de establecer la variable de sesión en la función login. Por ejemplo:

    public function login(RequestStack $requestStack, RouterInterface $router): Response
    {
        // ... código para establecer la variable de sesión
    
        return $this->redirect($router->generate('get_city_route'));
    }
    

    En este ejemplo, get_city_route debe ser reemplazado por el nombre de la ruta para la función getCity en el CityController. Esto asegurará que la función getCity se llame inmediatamente después de la función login y la variable de sesión debería estar establecida y accesible.

Comments are closed.