2014-06-09 63 views
0
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\Security\Core\SecurityContext; 
use ESS\UserBundle\Entity\User; 
use ESS\UserBundle\Form\UserType; 
use ESS\UserBundle\Form\UserEdit; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Cookie; 

     $user_cookie = new Cookie('user','admin',12000); 
       $code_cookie = new Cookie('ccode','1234',12000); 
       $response = new Response(); 
       $response->headers->setCookie($user_cookie); 
       $response->headers->setCookie($code_cookie); 
    print_r($_COOKIE); 
    exit; 

我已經使用這段代碼來設置cookie。但是,它沒有設置。無法弄清楚爲什麼?symfony 2.4 cookies沒有設置

Cookie在我的瀏覽器中啓用。

回答

4

我建議你用https://github.com/oodle/KrumoBundle 這是最好的像一個cookie調試對象元素測試你的代碼。

我同意Tomasz的說法,「您的cookie應該設置好,但是在下一次請求服務器的時候。」答案的一部分。但是你應該使用$ response-> sendHeaders();而不是返回操作。 我得到了乾淨的白色頁面,返回$ response;

代碼:

$user_cookie = new Cookie('user','admin',12000); 
$code_cookie = new Cookie('ccode','1234',12000); 
$response = new Response(); 
$response->headers->setCookie($user_cookie); 
$response->headers->setCookie($code_cookie); 
$response->sendHeaders(); 

//之後,它可以返回到行動相關的樹枝或重定向某處。

+0

$ response-> sendHeaders();必須在setCookie()之後調用 –

0

在此代碼中,您的$_COOKIE將不會被設置,因爲它在回覆給用戶時設置。 因此,執行您的代碼並返回Response對象後,您的Cookie應設置,但在下一個請求服務器。

$user_cookie = new Cookie('user','admin',12000); 
$code_cookie = new Cookie('ccode','1234',12000); 
$response = new Response(); 
$response->headers->setCookie($user_cookie); 
$response->headers->setCookie($code_cookie); 
return $response;