我在Cakephp 3.5.x中运行cookie时遇到问题。
在早期版本中,我使用过Cookie组件,但现在不推荐使用它。我不清楚如何使用这种新的中间件来读写cookie。
我不清楚documentation。它向我展示了如何设置cookie中间件,而不是如何处理在控制器中创建cookie。是否有人在3.5.x中处理过cookie?
答案 0 :(得分:5)
中间件只替换了Cookie组件的加密部分(基本上它是CakePHP 3.0的唯一功能),如果需要,它会自动加密和解密你配置的cookie。
您不使用中间件来读取或写入cookie,这是通过请求和响应对象完成的,这是CakePHP 3以来的默认值。
从控制器操作中读取和写入cookie可以简单如下:
$rememberMe = $this->request->getCookie('remember_me');
$this->response = $this->response->withCookie('remember_me', [
'value' => 'yes',
'path' => '/',
'httpOnly' => true,
'secure' => false,
'expire' => strtotime('+1 year')
]);
另见
答案 1 :(得分:0)
我使用Cake 3.8的情况下,以防万一有人迷失自己:
在beforeFilter中加载组件
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
//Load components, like Cookie
$this->loadComponent('Cookie', ['expires' => '30 day']);
}
如果蛋糕抱怨:
Argument 1 passed to App\Controller\PController::beforeFilter() must be an instance of App\Controller\Event, instance of Cake\Event\Event given
将以下内容添加到班级顶部:
use Cake\Event\Event;
然后在Controller动作中读取和写入Cookies轻而易举:
//Read
$fooVal = $this->Cookie->read('foo');
//Write
$this->Cookie->write('foo', 'bar');