Чтение переменной сеанса внутри поведения в cakephp 2 - PullRequest
5 голосов
/ 16 декабря 2011

У меня есть поведение, которое позволяет разделить пользовательские данные на основе идентификатора пользователя, хранящегося в сеансе.В CakePHP 1.3 вы могли бы сделать это:

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

Но в CakePHP 2 вы не можете создать экземпляр компонента, подобного этому, в поведении, потому что для компонента __construct требуется ComponentCollection контроллера как параметр.1005 * Возможно ли получить доступ к переменной сеанса внутри поведения в CakePHP 2?Какой лучший способ сделать это?

Ответы [ 2 ]

23 голосов
/ 16 декабря 2011

Если вы посмотрите на код SessionComponent, вы увидите, что это только оболочка для класса CakeSession.

Таким образом, вы можете сделать следующее:

App::uses('CakeSession', 'Model/Datasource');
$user_id = CakeSession::read('Auth.User.id');
3 голосов
/ 12 января 2012

В CakePHP 2.0 вы также можете просто вызывать Session-методы через статический CakeSession :: method (), не загружая что-либо ...; -)

...