2009-11-19 14 views

Respuesta

32

En su controlador, puede acceder a las variables de sesión a través del objeto de usuario.

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

En su vista, puede acceder a las variables de sesión a través de la variable '$ sf_user', de la misma manera que lo hace con' $ this-> getUser() 'en el controlador. – Throoze

+0

No creo que esto funcione si no tiene un usuario o un firewall. – Ascherer

80

En Symfony2, la sintaxis es diferente:

$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'); 

También puede obtener las variables de sesión de la ramita, sin tener que pasar la variable de sesión de forma explícita (está en la 'app' mundial):

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

** Symfony: ** _ porque ¿a quién le importa realmente la Ley de Demeter? _ – rdlowrey

+5

¿Cómo el uso de las variables de sesión viola la Ley de Demeter? – Videl

+3

@Videl no está utilizando sesiones que violan LoD, es la capa de abstracción de Symfony. –

Cuestiones relacionadas