我的行为可以根据会话中存储的用户ID实现用户数据的隔离。在CakePHP 1.3中,你可以这样做:
App::import('Component', 'Session');
$session = new SessionComponent();
$session->read('Auth.User.id');
但是在CakePHP 2中,你无法在行为中实例化这样的组件,因为Component __construct需要Controller的ComponentCollection作为参数。
是否可以在CakePHP 2中的行为中访问会话变量?最好的方法是什么?
答案 0 :(得分:23)
如果查看SessionComponent
代码,您会发现它只是CakeSession
类的包装器。
所以你可以做到以下几点:
App::uses('CakeSession', 'Model/Datasource');
$user_id = CakeSession::read('Auth.User.id');
答案 1 :(得分:3)
在CakePHP 2.0中,您也可以通过静态CakeSession :: method()调用Session-methods,而无需加载任何 ...; - )