2013-06-01 19 views
9

Ho creato una variabile di sessione in un controller e voglio accedervi in ​​un altro controller. In loginsuccess Controller ho impostato la sessione:Come accedere alla variabile di sessione nel controller

$session->set('id',$id); 

Come posso accedere a questa variabile in un altro controllore?

risposta

17

C'è session servizio che si dovrebbe usare:

$id = $this->get('session')->get('id'); 

o

$this->get('session')->set('id', $id); 
+1

sono d'accordo, questo è un modo migliore per andare. –

1

Mentre risposta Cipriano è valido, troverete nella documentazione seguente utilizzo:

use Symfony\Component\HttpFoundation\Session\Session; 

$session = new Session(); 
$session->start(); 

// set and get session attributes 
$session->set('id',$id); 
$session->get('id'); //this is the line you are looking for 

http://symfony.com/doc/master/components/http_foundation/sessions.html

Nota:

Mentre si consiglia di iniziare in modo esplicito una sessione, a sessioni effettivamente iniziare a richiesta, vale a dire, se qualsiasi richiesta di sessione è fatto per i dati della sessione/scrittura lettura.

+0

Buon punto. Ma fai attenzione che questa è la documentazione dei componenti. In realtà secondo i documenti del framework c'è un terzo modo di giocare con il servizio di sessione: http://symfony.com/doc/current/book/controller.html#managing-the-session :) – Cyprian

+4

ma, forse vale la pena di aggiungere , l'oggetto di sessione restituito dall'oggetto Richiesta è esattamente uguale a quello dal contenitore di servizi – Cyprian

+1

Poiché la domanda riguarda l'accesso alla sessione da un controller, la risposta ha più senso. Ma come hai detto, probabilmente vale la pena menzionare che $ this-> getRequest() -> getSession() 'è valido anche in questo contesto! – cheesemacfly

5

Su una nota più generale, se il controller si estende dalla base Symfony controllore (Symfony\Bundle\FrameworkBundle\Controller\Controller) è possibile ottenere la sessione in 3 modi:

  1. $session = $this->container->get('session');
  2. $session = $this->get('session'); (che in fondo è una scorciatoia a 1)
  3. $session = $request->getSession();
Problemi correlati