我在Symfony2中管理Cookie时遇到了困难。
我的所有数据都在一个控制器中被操作,该控制器用作另一个控制器的服务(我在此控制器外测试过,我也有同样的问题)。
我使用以下内容:
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Cookie;
要设置Cookie,我使用 Cookie()和响应()
public function indexAction()
{
$cookie = new Cookie('mycookie', 'myvalue' );
$response = new Response();
$response->headers->setCookie( $cookie );
$response->send();
return $this->render('MyBundle:Default:default.html.twig', array());
}
一切都很好,我可以查看Cookie转储 $ _ COOKIE var,我可以使用各种浏览器插件查看它。但问题是我无法阅读/获取它。
我尝试了两种方法,但都没有成功。
public function readAction()
{
// Method 1
$request = new Request;
$cookies = $request->cookies;
var_dump( $cookies->get('mycookie') );
// Method 2
$response = new Response();
$cookies = $response->headers->getCookies();
var_dump($cookies);
// Return My Response
}
任何想法我在这里做错了什么? 要注意我刚刚开始使用Symfony2。
答案 0 :(得分:0)
您正在创建新的Request
& Response
对象而不是使用预先初始化的对象。试试这种方式,
public function readAction(Request $request) // <-- Notice the change
{
// Method 1
$cookies = $request->cookies;
var_dump( $cookies->get('mycookie') );
// Method 2
$response = $this->getResponse(); // <-- Notice the change
$cookies = $response->headers->getCookies();
var_dump($cookies);
// Return My Response
}
答案 1 :(得分:0)
谢谢Apul Gupta。从你的回答我得到这样的东西:
public function readAction(Request $request)
{
$mycookie = $request->cookies->get('mycookie');
var_dump( $mycookie );
}
从控制器,我请求readAction
$generic = $this->get('generic');
$generic->readAction( $this->getRequest() ); // added this code here because the controller as service don't get the "getRequest()" method
谢谢