我已经在蛋糕书中读到Session中的Session使用SessionHelper,但是该帮助器没有删除会话的方法。这真的是这样,有人可以帮忙吗?
答案 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');
答案 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);