2014-11-11 2 views
0

Symfony2에서 쿠키를 관리하는 데 어려움이 있습니다.Symfony2 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()); 

} 

모든 여기 괜찮습니다, 나는을 볼 수 있습니다 내가 쿠키를 사용하여 쿠키를 설정하려면()응답()

use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\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를 사용하기 시작했습니다.

답변

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에서 요청하려고하면 놓친 인수 오류가 발생합니다. 서비스로 액세스하려고하면 요청한 메소드가없는 요청 객체가 있습니다. ... – Adrian

+0

컨트롤러 파일의 전체 코드를 게시하십시오. –

0

감사합니다. Apul Gupta. 당신의 대답에서 나는 이런 걸 가지고 : 나는 readAction를 요청 컨트롤러에서

public function readAction(Request $request) 
{ 
    $mycookie = $request->cookies->get('mycookie'); 
    var_dump($mycookie ); 
} 

$generic = $this->get('generic'); 
$generic->readAction($this->getRequest()); // added this code here because the controller as service don't get the "getRequest()" method 

는 난 ... 일을하지 않는

관련 문제