CakePHP Session变量在视图页面中使用?

时间:2009-10-20 20:01:30

标签: php session cakephp

我有一个包含“username”的变量,并希望通过会话将这些值传递给任何视图页面。

如何在视图中获取此会话变量?

6 个答案:

答案 0 :(得分:12)

您的控制器中有一个SessionComponent,您可以使用$this->Session->write('Name', 'Value');。类似地,View也有SessionHelper,它的功能非常相似,可以像$session->read('Name');一样使用。

答案 1 :(得分:5)

您可以在视图文件中使用$this->Session->read('myParam') 但是你不能使用$this->Session->write('myParam')

如上所述here

  

Session Helper和Session之间的主要区别   组件是帮助器没有写入的能力   会话。

答案 2 :(得分:2)

要在帮助器中使用它,您必须记住将它包含在$ helpers声明中:

class Foo extends AppHelper
{
    var $helpers = array('Session','Bar');

答案 3 :(得分:0)

如果您在控制器中,请使用会话组件。默认情况下,它包含在所有控制器中。它具有Session :: read()和Session :: write()方法。查看http://book.cakephp.org/view/173/Sessions了解详情。

我相信,如果Session组件与其他组件类似,则可以在视图中使用它。尝试在视图代码块中执行$ session-> read()。如果这不起作用,请尝试执行$ this-> Session-> read(...)。作为最后的手段,如果这些都不起作用,你总是可以使用旧的PHP $ _SESSION,尽管它在Cake框架之外有点转向。但是,如果你确定你不打算使用Cake的Session管理(你真的没有,IMO,因为它只不过是$ _SESSION的包装),那么就知道何时正确应用hack。

答案 4 :(得分:-1)

在过滤器之前的App控制器中使用此功能

  

$ this-> Session-> write('Person.eyeColor','username'); $ green =   $这 - >会话而>读取( 'Person.eyeColor');   $这 - >设置( '用户名',$绿色);

这将为您提供所需的结果

答案 5 :(得分:-2)

您可以使用

将Session对象从控制器传递到视图模板
$this->set('session',$this->Session);

然后在视图文件中 使用$session->read('SessionName');