2010-10-07 54 views
0

我在用户控制器中有一个编辑操作。如果他们的Auth.User.id不等于他们尝试编辑的用户的ID,我想要做的是将任何人重定向到不同的操作。CakePHP:从控制器内访问会话数据

我可以访问的变量在我的看法是这样的:

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

但是这并不在我的控制器工作。正在获取:

Undefined variable: session 

如何访问控制器内的会话数据?此外,如果有更好的方式来实现我想要做的事情,请随时添加!

感谢,

Jonesy

+1

只是一个友好的提醒,试图在控制器中尽可能多的逻辑。 CakePHP的编码惯例越多,你越感谢以后。 ;)请随时在http://book.cakephp.org/view/901/CakePHP-Conventions上详细介绍一下它们的快乐烘焙! – 2010-10-07 22:11:32

回答

8

必须先添加会议在你的控制器组件:

var $components= array('Session');

然后,您可以通过$this->Session

+0

+1表示一般正确性,但他应该将Session作为组件添加,而不是帮助程序。 (尽管通常都是) – Stephen 2010-10-07 21:52:12

+0

谢谢,斯蒂芬。我混淆了组件和助手。我编辑过。 – webbiedave 2010-10-07 22:01:25

4

访问它在你的方法您可以使用$this->Session->read('Auth.User.id');来阅读控制器中的会话数据CakePHP Sess如果我没有记错的话,离子成分会自动加载到所有的控制器中,除非您在其他地方定义了默认组件。如果$this->Session未定义,请将其包含到您的控制器中的$components阵列中,如var $components = array('Session');

请务必注意,助手与组件不同。一般来说,组件是控制器的扩展功能。鉴于助手是您的视图的扩展功能。

为了全面了解所有可能的方法,CakePHP Cookbook将为您带来无法估量的价值! http://book.cakephp.org/view/1310/Sessions