CakePHP:从控制器中访问会话数据

时间:2010-10-07 21:44:16

标签: php session cakephp

我在用户控制器中有一个编辑操作。如果他们的Auth.User.id不等于他们试图编辑的用户的ID,我想要做的是将任何人重定向到不同的操作。

我可以在我的视图中访问变量,如下所示:

if($session->read('Auth.User.id') != $id){

但这在我的控制器中不起作用。获得:

Undefined variable: session

如何在控制器中访问会话数据?另外,如果有更好的方法来实现我想做的事情,请随意添加!

谢谢,

Jonesy

2 个答案:

答案 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