У меня возникли трудности с управлением файлами cookie в Symfony2.
Все мои данные обрабатываются в контроллере, который используется как служба для другого контроллера (я тестировал вне этого контроллера, и у меня такая же проблема).
Я использую следующее:
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Cookie;
Чтобы установить Cookie, я использую Cookie() и Response()
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, и я вижу его с помощью различных плагинов браузера. Но проблема в том, что я не могу ее прочитать/получить.
Я пробовал 2 метода, ни один из них не был успешным.
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.
Вы создаете новый объект 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
}
Спасибо Апулу Гупте. Из вашего ответа я получил что-то вроде этого:
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
спасибо