我在用户控制器中有一个编辑操作。如果他们的Auth.User.id不等于他们试图编辑的用户的ID,我想要做的是将任何人重定向到不同的操作。
我可以在我的视图中访问变量,如下所示:
if($session->read('Auth.User.id') != $id){
但这在我的控制器中不起作用。获得:
Undefined variable: session
如何在控制器中访问会话数据?另外,如果有更好的方法来实现我想做的事情,请随意添加!
谢谢,
Jonesy
答案 0 :(得分:8)
您必须首先将Session添加为控制器中的组件:
var $components= array('Session');
然后,您可以通过$this->Session
答案 1 :(得分:4)
您可以使用$this->Session->read('Auth.User.id');
在控制器中读取会话数据如果我没记错的话,CakePHP会话组件会自动加载到所有控制器中,除非您已在其他地方定义了默认组件。如果未定义$this->Session
,请将其包含在控制器中的$components
数组中,如var $components = array('Session');
重要的是要注意Helpers与Components不同。一般来说,组件是Controller的扩展功能。而助手则为您的观点提供了扩展功能。
要全面了解所有可能的方法,CakePHP Cookbook对您来说非常宝贵! http://book.cakephp.org/view/1310/Sessions