2012-03-14 120 views
0

我不能理解的CakePHP控制器会话的奇怪的行为:CakePHP的会话烦恼

class UsersController extends AppController 
{ 
    public $helpers = array('Session'); 
    public $components = array('Session'); 

    public function Do() { 
     $this->Session->write('Foo', 'Bar'); 
     $_SESSION['Foo2'] = 'Bar2'; 

     echo $this->Session->read('Foo'); 
     echo $_SESSION['Foo2']; 
    } 
}; 

首先回声输出什么,第二个 - Bar2。为什么本机$_SESSION可以工作,但通过CakePHP接口它不可用?

+0

它应该在代码中没有问题,你可以再次检查 – 2012-03-14 19:20:34

+0

你有会话在'app/config/core.php'上正确设置吗? – bfavaretto 2012-03-14 21:25:20

+0

@bfavaretto是的,它设置为'php'。 – Ockonal 2012-03-15 07:10:57

回答

1

(这个回答假设CakePHP的1.3)

你在,你有Session.save设置为php您的配置文件中的注释说。在同一个文件中,你应该有Session.start设置为true。如果你不这样做,你有两个选择:

  • 实际使用会话组件之前设置Session.starttrue的配置文件,或者
  • 调用从控制器$this->Session->activate()

参考文献:

http://book.cakephp.org/1.3/en/view/1465/Session(奇怪的是,Session.startactivate()只记录了会议的帮手,但它们适用于组件太)。 http://book.cakephp.org/1.3/view/931/CakePHP-Core-Configuration-Variables