2016-09-21 81 views
1

既然我想弄清楚为什么通过ZF2设置cookie似乎很难?可能它不是,但我不明白为什么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); 

刷新页面。自卸

Debug::dump($_COOKIE); 

输出测试不包含 'accepted_cookies' 或 'test_key' 的cookie。

+2

[在zend框架中设置cookie的可能的重复](http://stackoverflow.com/questions/9514879/set-cookie-in-zend-framework) – WillardSolutions

+0

@EatPeanutButter该链接是一个与zend框架1有关的问题不是zend框架2 – Wilt

+0

这是ZF2确实 – directory

回答

1

您在响应对象中设置了Cookie,并且倾销$_COOKIE不会立即为您提供添加到响应对象的Cookie。

在Zend Framework 2中使用cookie时,不需要直接与超级全局进行交互。也请检查the documentation for reference

你可以尝试像这样在你的下一个请求对象:

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

检查也this answer对cookie管理更多的例子。

+0

我试着刷新很多次,并在不同的页面上输出cookie来检查结果。没有出现 – directory

+0

@directory更新了我的答案 – Wilt

+0

非常感谢!这个技巧:-) – directory