Как создать куки на уровне контроллера в CakePHP 3.5?

У меня проблемы с тем, чтобы заставить куки работать в cakephp 3.5.x.

в более ранних версиях я использовал компонент Cookie, но теперь это устарело. Мне неясно, как использовать этот новый промежуточный продукт для чтения и записи файлов cookie.

Документация для меня неясна. В нем показано, как настроить промежуточное программное обеспечение для файлов cookie, а не как создавать файлы cookie в контроллере. Есть ли кто-нибудь, кто обрабатывал куки в 3.5.x?

1 ответ

Промежуточное программное обеспечение заменяет только часть шифрования компонента 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')
]);

Смотрите также

Мой случай с использованием 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;

А затем чтение и запись файлов cookie в вашем действии контроллера - это легкий ветерок:

//Read
$fooVal = $this->Cookie->read('foo');
//Write
$this->Cookie->write('foo', 'bar');
Другие вопросы по тегам