如何在CakePHP 3.5中创建控制器级别的cookie?

如何在CakePHP 3.5中创建控制器级别的cookie?,cakephp,cookies,cakephp-3.0,middleware,Cakephp,Cookies,Cakephp 3.0,Middleware,我在cakephp 3.5.x中使用cookie时遇到问题 在早期版本中,我使用了Cookie组件,但现在已经不推荐使用。我不清楚如何使用这个新的中间件来阅读和编写cookies 对我来说,答案不清楚。它向我展示了如何设置cookie中间件,而不是如何在控制器中创建cookie。是否有人在3.5.x中处理过Cookie?中间件只替换Cookie组件的加密部分(这基本上是它在CakePHP 3.0中所做的唯一事情),如果需要,它会自动加密和解密您配置的Cookie 您不使用中间件读取或写入cook

我在cakephp 3.5.x中使用cookie时遇到问题

在早期版本中,我使用了Cookie组件,但现在已经不推荐使用。我不清楚如何使用这个新的中间件来阅读和编写cookies


对我来说,答案不清楚。它向我展示了如何设置cookie中间件,而不是如何在控制器中创建cookie。是否有人在3.5.x中处理过Cookie?

中间件只替换Cookie组件的加密部分(这基本上是它在CakePHP 3.0中所做的唯一事情),如果需要,它会自动加密和解密您配置的Cookie

您不使用中间件读取或写入cookie,这是通过请求和响应对象完成的,这是自CakePHP 3以来的默认设置

从控制器操作中读取和写入Cookie非常简单,如下所示:

$rememberMe = $this->request->getCookie('remember_me');
另见


我的案例使用Cake 3.8,以防有人像我一样迷路:

在beforeFilter中加载组件

public function beforeFilter(Event $event)
{
    parent::beforeFilter($event);
    //Load components, like Cookie
    $this->loadComponent('Cookie', ['expires' => '30 day']);
}
如有投诉:

传递给App\Controller\PController::beforeFilter()的参数1必须是给定的App\Controller\Event、Cake\Event\Event的实例

将以下内容添加到类的顶部:

use Cake\Event\Event;
然后在控制器操作中读取和写入cookie是:

//Read
$fooVal = $this->Cookie->read('foo');
//Write
$this->Cookie->write('foo', 'bar');
//Read
$fooVal = $this->Cookie->read('foo');
//Write
$this->Cookie->write('foo', 'bar');