symfony 2.4 cookies没有设置

时间:2014-06-09 11:59:47

标签: php symfony cookies

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。但是,它没有设定。想不清楚为什么??

我的浏览器启用了Cookie。

2 个答案:

答案 0 :(得分:5)

我建议您使用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();

//之后,您可以返回与动作相关的树枝或重定向某处。

答案 1 :(得分:0)

在此代码中,您的$_COOKIE无法设置,因为在将响应发送回用户时设置了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); return $response; 对象后,您的Cookie应该设置,但在 next 请求服务器。

{{1}}