2009-11-19 20 views

Odpowiedz

32

W kontrolerze można uzyskać dostęp do zmiennych sesji za pośrednictwem obiektu użytkownika.

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

W twoim widoku możesz uzyskać dostęp do zmiennych sesji za pomocą zmiennej '$ sf_user', tak samo jak robisz z' $ this-> getUser() 'w kontrolerze. – Throoze

+0

Nie sądzę, że to zadziała, jeśli nie masz użytkownika lub zapory. – Ascherer

80

W Symfony2, składnia jest inna:

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

Można również uzyskać zmiennych sesji z gałązka, bez konieczności przechodzenia zmiennej sesji wyraźnie (to w globalnej „aplikacji”):

+2

** Symfony: ** _to kto tak naprawdę troszczy się o prawo Demeter? _ – rdlowrey

+5

W jaki sposób używanie zmiennych sesji narusza prawo Demeter? – Videl

+3

@Wiadomo, że nie używa sesji, które naruszają LoD, jest to warstwa abstrakcji z symfony. –