Чтение переменной сеанса внутри поведения в cakephp 2

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

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

Но в CakePHP 2 вы не можете создать такой компонент в поведении, потому что __construct компонента требует ComponentCollection контроллера в качестве параметра.

Можно ли получить доступ к переменной сеанса внутри поведения в CakePHP 2? Как лучше всего это сделать?


person Brad Koch    schedule 16.12.2011    source источник


Ответы (2)


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

Итак, вы можете сделать следующее:

App::uses('CakeSession', 'Model/Datasource');
$user_id = CakeSession::read('Auth.User.id');
person nIcO    schedule 16.12.2011
comment
Хороший улов .. явно не слишком много думал, когда я опубликовал это прошлой ночью. - person Brad Koch; 16.12.2011

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

person JD-Robbs    schedule 12.01.2012
comment
ну, ваш класс все еще должен иметь оператор App::uses('CakeSession', 'Model/Datasource');! ;) - person mark; 24.05.2012