2009-11-19 16 views

risposta

32

Nel controller è possibile accedere alle variabili di sessione tramite l'oggetto utente.

// Get a session value 
$name = $this->getUser()->getAttribute('name', 'default_value'); 
// Set a session value 
$this->getUser()->setAttribute('name', $value); 
+1

Nella tua vista, puoi accedere alle variabili di sessione attraverso la variabile '$ sf_user', proprio come con' $ this-> getUser() 'nel controller. – Throoze

+0

Non penso che funzionerà se non si dispone di un utente o di un firewall. – Ascherer

80

In Symfony2, la sintassi è diversa:

$session = $this->getRequest()->getSession(); 

// store an attribute for reuse during a later user request 
$session->set('foo', 'bar'); 

// in another controller for another request 
$foo = $session->get('foo'); 

È inoltre possibile ottenere le variabili di sessione da Ramoscello, senza dover passare la variabile di sessione in modo esplicito (è nella 'app' globale):

{{ app.session.get('foo', 'bar'); }} 
+2

** Symfony: ** _perché a chi importa davvero della Legge di Demetra? _ – rdlowrey

+5

In che modo utilizzare le variabili di sessione viola la Legge di Demetra? – Videl

+3

@Videl non usa sessioni che violano LoD, è il livello di astrazione di symfony. –