Symfony2 Cookie Проблемы при попытке получить cookie

0

У меня возникли трудности с управлением файлами 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.

Теги:
cookies
request
response

2 ответа

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

}
  • 0
    К сожалению, это не делает работу ... Я новичок в Symfony, так что, возможно, я не понимаю всю идею правильно. «ReadAction» - это контроллер, если я пытаюсь запросить URL, я получаю ошибку пропущенного аргумента. Если я пытаюсь получить доступ к нему как к услуге, у меня нет объекта запроса из метода, который я запрашиваю ....
  • 0
    Пожалуйста, отправьте полный код файла контроллера.
0

Спасибо Апулу Гупте. Из вашего ответа я получил что-то вроде этого:

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

спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню