【问题标题】:CakePHP: Accessing session data from within a controllerCakePHP:从控制器内访问会话数据
【发布时间】:2010-10-07 21:44:16
【问题描述】:

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

我可以像这样访问视图中的变量:

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

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

Undefined variable: session

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

谢谢,

琼斯

【问题讨论】:

  • 只是一个友好的提醒,请尝试在控制器中执行尽可能多的逻辑。您越遵守 CakePHP 的编码约定,您以后就越会感谢自己。 ;) 随时在book.cakephp.org/view/901/CakePHP-Conventions快乐烘焙中深入了解它们!

标签: php session cakephp


【解决方案1】:

您必须首先将 Session 作为组件添加到您的控制器中:

var $components= array('Session');

然后您可以通过$this->Session在您的方法中访问它

【讨论】:

  • +1 表示一般正确性,但他应该将 Session 添加为组件,而不是助手。 (尽管通常两者兼而有之。)
  • 谢谢,斯蒂芬。我混合了组件和助手。我已经编辑了。
【解决方案2】:

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

请务必注意,Helper 与 Components 不同。一般来说,组件是控制器的扩展功能。而 Helpers 是您的视图的扩展功能。

要全面了解所有可能的方法,CakePHP Cookbook 对您来说非常宝贵! http://book.cakephp.org/view/1310/Sessions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多