2011-12-16 96 views
5

我有一个行为,可以根据存储在会话中的用户标识实现用户数据的分离。在CakePHP 1.3,你可以这样做:在cakephp中的行为中读取一个会话变量2

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

但在CakePHP中2,因为组件__construct需要控制器的ComponentCollection作为参数,你不能像实例化一个组件的行为。

是否可以在CakePHP 2中的行为中访问会话变量?什么是最好的方式来做到这一点?

回答

23

如果你看看SessionComponent的代码,你会发现它只是CakeSession类的封装。

所以,你可以做到以下几点:

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

很好的接收..显然没有想太多,当我昨晚发布这个。 – 2011-12-16 18:43:31

3

在CakePHP 2.0你也可以简单地调用通过静态CakeSession ::方法()会议的方法,而无需加载任何...; - )

+3

好吧,你的类仍然应该有`App :: uses('CakeSession','Model/Datasource');`语句,不过! ;) – mark 2012-05-24 13:43:38