Session 如何在cakephp 3.0中删除会话?

Session 如何在cakephp 3.0中删除会话?,session,cakephp,cakephp-3.0,Session,Cakephp,Cakephp 3.0,所有代码都在一个控制器中 我的代码是这样的 public function login() { $session = $this->request->session(); $session_event_id = $session->read('Events.event_id'); $session_division_id = $session->read('Events.division_id'); if(!$sessio

所有代码都在一个控制器中

我的代码是这样的

    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');
    }
    }
通过上面的代码,我能够写入和读取会话值,但在注销时,我想删除这些会话数据

public function logout()
{    
    $session = $this->request->session();
    $this->$session->delete();
    return $this->redirect($this->Auth->logout());
}
警告(4096):无法创建类Cake\Network\Session的对象 转换为字符串[APP/Controller/userscoontroller.php,第56行]

注意(8):类Cake\Network\Session到字符串转换的对象 [APP/Controller/userscoontroller.php,第56行]

错误:对非对象文件调用成员函数delete() /var/www/html/MEX/src/Controller/userscocontroller.php


您正在查找
$this->request->session()->destroy()

只是一个提示-对于这么小的函数,存储变量
$session
没有多大意义,因为不需要重用
$session
。我唯一要存储
$this->request->session()的情况是指在同一函数中访问会话进行多次读写时


(就错误而言,@Eagle是正确的,因为您使用该存储变量引用了“
$this
”两次。)

感谢您的支持和帮助,最终我自己找到了问题的解决方案

    $session = $this->request->session();
    $session->delete('Events.event_id');
    $session->delete('Events.division_id');

通过这样做,我能够清除会话数据。谢谢

请,如果您收到错误,即使是非常基本的错误,请始终发布完整、准确的错误消息,包括可能的堆栈跟踪!我已经清楚地提到了这个错误,您可以在注销时调用会话的
delete()
来检查outLook。您有
$this->$session->delete()
而不是
$session->delete()
谢谢。这些类型的错误再次出现警告(2):Cake\Network\Session::delete()缺少参数1,在第56行的/var/www/html/MEX/src/Controller/userscocontroller.php中调用,并定义了[CORE/src/Network/Session.php,第477行]注意(8):未定义变量:name[CORE/src/Network/Session.php,第479行]警告(2):无法修改头信息-已发送的头(输出在警告(2)时启动):会话重新生成id()[函数.会话重新生成id]:无法重新生成会话id-已发送的头[CORE/src/Network/session.php,第576行]错误可能更清楚吗?
session::delete()
需要传递一个参数。无意冒犯,但在开始使用像CakePHP这样成熟的框架之前,您应该先学习PHP/编程基础知识。