2016-09-21 1 views
1

С какого-то времени я пытаюсь понять, почему установка cookie через ZF2 кажется настолько сложной? Наверное, это не так, но я не могу понять, почему cookie не установлен.ZF2 setCookie не работает

Код

use Zend\Http\Header\SetCookie; 

    $response  = $this->getResponse()->getHeaders(); 
    $cookiesAccepted = new SetCookie('accepted_cookies', 1, strtotime('+1 Year', time()), '/'); 
    $cookieTest  = new SetCookie('test_key', 'test_value', strtotime('+1 Year', time()), '/'); 
    $response  ->addHeader($cookiesAccepted); 
    $response  ->addHeader($cookieTest); 

Освежающий страница.

выход Testing сбросом

Debug::dump($_COOKIE); 

не содержит 'accepted_cookies' или '' test_key печенье.

+2

Возможный дубликат [set cookie в zend framework] (http://stackoverflow.com/questions/9514879/set-cookie-in-zend-framework) – WillardSolutions

+0

@EatPeanutButter Эта ссылка связана с zend framework 1 не zend framework 2 – Wilt

+0

Это действительно ZF2 – directory

ответ

1

Вы устанавливаете файлы cookie в объекте отклика, а сброс $_COOKIE не сразу даст вам файлы cookie, добавленные в ваш объект ответа.

При использовании файлов cookie в Zend Framework 2 нет необходимости напрямую взаимодействовать с супер глобальным. Проверьте также the documentation for reference.

Вы могли бы попробовать, как это в следующем объекте запроса:

$accepted_cookies = $this->getRequest()->getHeaders()->get('Cookie')->accepted_cookies; 
$test_key = $this->getRequest()->getHeaders()->get('Cookie')->test_key; 

this answer Проверить также другие примеры по управлению печеньем.

+0

Я попытался обновить много раз и выпустить файлы cookie на разных страницах, чтобы проверить результаты. Ничего не появилось – directory

+0

@directory Обновлено мой ответ – Wilt

+0

Большое спасибо! Это сделал трюк :-) – directory