2012-11-22 2 views
2

다음은 제 문제입니다. Symfony2.1 컨트롤러에서 나는 Ajax 전화를받습니다. Request 개체를 사용하면 보낸 매개 변수를 가져올 수 없습니다. PHP _REQUEST 객체를 사용하면 param이 발견됩니다! 중요한 경우 요청이 XHR임을 확인할 수 있습니다.Symfony2의 XmlHttpRequest

public function savedataAction(Request $request){ 
    if($request->isXmlHttpRequest()) 
    echo 'Ajax Call'; 

    $param1 = $request->request->get('myParam'); // Nothing is returned, but $request is obviosly not null 
    $param2 = $_REQUEST['myParam']; // The value is given 

    .... 
} 

어떤 생각 : 여기 내 코드?

추신 : 도움이된다면 Valums에 의해 제공되는 파일 업 로더 jQuery 플러그인에 의해 AJAX 호출이 전송됨을 알 수 있습니다.

답변

1

일반적으로는 : 여기

// retrieve GET and POST variables respectively 
$request->query->get('foo'); 
$request->request->get('bar', 'default value if bar does not exist'); 

봐는 fundamentels입니다.

http://symfony.com/doc/current/book/http_fundamentals.html

편집 : 당신이 Symfony2 사이트에서 양식을 보낼 때 귀하의 경우

$request 만 가득합니다. CSRF 보호가 요청을 차단할 수 있습니다.

는 요청 개체를 가져 컨트롤러이 시도 :

$request = $this->get('request'); 

http://symfony2forum.org/threads/5-Using-Symfony2-jQuery-and-Ajax

+0

본부, 죄송합니다! 내 예제에서 코드를 잘못 작성했습니다 ... $ request-> request입니다. 내 질문을 바로 잡을거야! 그러나 문제는 여전히 남아 있습니다! – JeanValjean

+0

내 대답을 편집했습니다. 문제는 다른 방법으로 요청 개체에 액세스해야한다는 것입니다. CSRF 보호는 유효한 양식이 아닌 외부 요청을 차단합니다. – Stony

+0

문제점을 발견했습니다. param은 $ request-> query-> get ('myParam')에 있습니다. 나는 사용 된 방법이 POST이고 GET이 아니라고 확신했다! 정말 이상 하네! – JeanValjean