所有代码都在一个 Controller 中
我的代码是这样的。
public function login()
{
$session = $this->request->session();
$session_event_id = $session->read('Events.event_id');
$session_division_id = $session->read('Events.division_id');
if(!$session_event_id || !$session_division_id) {
$event_table = TableRegistry::get('Events');
$event = $event_table->find('all', ['fields' => ['id'], 'order' => 'id desc'])->first();
$session->write('Events.event_id', $event->id);
$session_event_id = $session->read('Events.event_id');
$division_table = TableRegistry::get('Divisions');
$division = $division_table->find('all',['fields' => ['id'], 'conditions' => ['event_id' => $event->id]])->first();
$session->write('Events.division_id', $division->id);
$session_division_id = $session->read('Events.division_id');
}
}
通过上面的代码,我可以写入和读取 session 值,但是在注销时我想删除那些 session 数据
public function logout()
{
$session = $this->request->session();
$this->$session->delete();
return $this->redirect($this->Auth->logout());
}
Warning (4096): Object of class Cake\Network\Session could not be converted to string [APP/Controller/UsersController.php, line 56]
Notice (8): Object of class Cake\Network\Session to string conversion [APP/Controller/UsersController.php, line 56]
Error: Call to a member function delete() on a non-object File /var/www/html/MEX/src/Controller/UsersController.php
最佳答案
你正在寻找$this->request->session()->destroy();
http://book.cakephp.org/3.0/en/development/sessions.html#destroying-the-session
只是一个提示 - 为这么小的函数存储变量 $session
没有多大意义,因为 $session
的重用不是必需的。我将 $this->request->session();
存储在变量中的唯一情况是当我访问 session 以在同一个函数中进行多次读写时。
(就错误而言,@Eagle 是正确的,因为您通过使用该存储变量引用了 '$this
' 两次。)
关于session - 如何在cakephp 3.0 中删除 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350425/