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