2016-09-21 113 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