如何在cakephp 2.0中删除视图中的会话?

时间:2012-11-15 03:58:58

标签: cakephp

我已经在蛋糕书中读到Session中的Session使用SessionHelper,但是该帮助器没有删除会话的方法。这真的是这样,有人可以帮忙吗?

5 个答案:

答案 0 :(得分:5)

delete session data,请使用控制器中的Session Component,而不是视图。

//example from the CakePHP book (linked above)
$this->Session->delete('Person');

或者:

  

destroy方法将删除会话cookie和所有会话数据   存储在临时文件系统中。然后它会破坏PHP   会话,然后创建一个新的会话:

$this->Session->destroy();

虽然技术上可以在视图中删除会话数据(毕竟它只是一个PHP文件),但CakePHP框架在构建时考虑了MVC结构。 " V" (对于" view")应仅与显示Controller提供的数据相关(从模型中检索)。

模型处理访问数据/数据库,Controller执行应用程序逻辑。所以 - 会话组件(组件用于控制器)被赋予一种删除会话数据的方法,但是Session Helper(帮助器用于视图)不是。

答案 1 :(得分:3)

根据具体情况可以使用自定义Flash消息。使用自定义键设置Flash消息,如此

$this->Session->setFlash('my_value', 'default', array(), 'my_key');

并使用flash方法在视图中阅读(将自动删除它)

$value = $this->Session->flash('my_key');

此帖http://hashmode.com/cakephp-delete-session-in-view/81

中的详细信息

答案 2 :(得分:1)

在您的视图中尝试unset($_SESSION['YOUR_SESSION_KEY']);

答案 3 :(得分:0)

要删除会话变量,您可以使用以下代码(控制器中的 )。

// same as unset($_SESSION['your_session_varable'])
$this->Session->delete('your_session_varable');

您可以销毁调用以下内容的所有会话变量:

$this->Session->destroy();

答案 4 :(得分:0)

如果会话数据是一个数组,并且您只想像setFlash一样访问它,则可以将数组设置为setFlash而不使用template = false。

$this->Session->setFlash($arrayData,false,array(),'formData');

然后在视图中访问它

$data = $this->Session->flash('formData');
pr($data);