Nar*_*hat 1 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(!$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');
}
}
Run Code Online (Sandbox Code Playgroud)
通过上面的代码,我能够写入和读取会话值,但注销时我想删除那些会话数据
public function logout()
{
$session = $this->request->session();
$this->$session->delete();
return $this->redirect($this->Auth->logout());
}
Run Code Online (Sandbox Code Playgroud)
警告(4096):Cake\Network\Session类的对象无法转换为字符串[APP/Controller/UsersController.php,第56行]
注意(8):Cake\Network\Session类到String转换的对象[APP/Controller/UsersController.php,第56行]
错误:在非对象文件/var/www/html/MEX/src/Controller/UsersController.php上调用成员函数delete()
您正在寻找 $this->request->session()->destroy();
http://book.cakephp.org/3.0/en/development/sessions.html#destroying-the-session
只是一个提示 - $session对于一个小的函数存储一个变量并没有多大意义,在这个函数中$session没有必要重用.我存储$this->request->session();在变量中的唯一情况是当我访问会话以进行多次读取和写入所有相同的函数时.
(就错误而言,@ Eagle是正确的,因为你$this使用该存储变量引用' '两次.)