2011-12-16 6 views
5

Ho un comportamento che consente la segregazione dei dati utente in base all'ID utente archiviato nella sessione. In CakePHP 1.3 si potrebbe fare questo:Lettura di una variabile di sessione all'interno di un comportamento in cakephp 2

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

Ma in CakePHP 2, non è possibile creare un'istanza di un componente del genere in un comportamento perché la __construct componente richiede ComponentCollection del controllore come parametro.

È possibile accedere a una variabile di sessione all'interno di un comportamento in CakePHP 2? Qual è il modo migliore per farlo?

risposta

23

Se si guarda il codice SessionComponent, si vedrà che è solo un wrapper per la classe CakeSession.

in modo da poter effettuare le seguenti operazioni:

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

Bella cattura .. chiaramente non stava pensando troppo duramente quando ho postato questa scorsa notte. –

3

In CakePHP 2.0 è possibile anche semplicemente chiamare i metodi session-via CakeSession statica :: metodo() senza dover caricare nulla ...; -)

+3

beh, la classe dovrebbe avere ancora l'app 'uses ('CakeSession', 'Model/Datasource');' dichiarazione, però! ;) – mark

Problemi correlati