2011-12-16 7 views
5

Mam zachowanie, które umożliwia segregację danych użytkownika na podstawie identyfikatora użytkownika zapisanego w sesji. W CakePHP 1.3 można to zrobić:Odczytywanie zmiennej sesji wewnątrz zachowania w cakephp 2

App::import('Component', 'Session'); 
$session = new SessionComponent(); 
$session->read('Auth.User.id'); 

Ale w CakePHP 2, nie można utworzyć wystąpienia składnika takiego w zachowaniu, ponieważ składnik __construct wymaga ComponentCollection kontrolera jako parametr.

Czy można uzyskać dostęp do zmiennej sesji w działaniu w CakePHP 2? Jaki jest najlepszy sposób na zrobienie tego?

Odpowiedz

23

Jeśli spojrzysz na kod SessionComponent, zobaczysz, że jest to tylko opakowanie dla klasy CakeSession.

Więc można wykonać następujące czynności:

App::uses('CakeSession', 'Model/Datasource'); 
$user_id = CakeSession::read('Auth.User.id'); 
+1

Przyjemny haczyk ... najwyraźniej nie myślał zbyt mocno, kiedy wysłałem tę ostatnią noc. –

3

W CakePHP 2.0 można też po prostu zadzwonić do sesji metod statycznych za pośrednictwem CakeSession :: metoda() bez konieczności ładowania nic ...; -)

+3

cóż, twoja klasa powinna nadal zawierać instrukcję 'App :: uses ('CakeSession', 'Model/Datasource');'! ;) – mark

Powiązane problemy