Как я могу обновить запрос CookieCollection после удаления / удаления объекта cookie из коллекции в CakePHP - PullRequest
0 голосов
/ 10 января 2019

У меня проблемы с работой файлов cookie запроса в моем проекте. У меня есть коллекция файлов cookie с примерно 3 значениями a, b и c. Затем я пробую следующее, например:

$cookieCollection = $this->getRequest()->getCookieCollection();
if ($cookieCollection->has('b')) {
    $cookieCollection->remove('b');
}

После этого «b» удаляется только из этого экземпляра:

$cookieCollection.

Но это все еще там в

$this->getRequest()->getCookieCollection();

Теперь, как мне обновить CookieCollection, чтобы "b" больше не существовал нигде на всем сайте?

1 Ответ

0 голосов
/ 10 января 2019

Объекты запроса являются неизменными, как и коллекции файлов cookie (и ответы по этому вопросу). Вам нужно будет назначить новый объект запроса с новой коллекцией файлов cookie, например:

// ...
$cookieCollection = $cookieCollection->remove('b');
$this->setRequest($this->getRequest()->withCookieCollection($cookieCollection));

И если вам нужно, чтобы это было доступно везде, я бы посоветовал рассмотреть возможность удаления файлов cookie на уровне промежуточного программного обеспечения:

function (\Psr\Http\Message\ServerRequestInterface $request, $response, $next) {
    $cookies = $request->getCookieParams();
    if (isset($cookies['b'])) {
        unset($cookies['b']);
        $request = $request->withCookieParams($cookies);
    }

    return $next($request, $response);
}

Смотри также

...