2014-03-28 2 views
1

Zf2 및 DynamoDB를 사용하여 API를 개발했지만 내 로컬 컴퓨터의 GET 매개 변수에서 값을 가져올 수 있지만 프로덕션 환경에서 API를 업로드 할 때 GET 매개 변수에서 값을 가져올 수 없습니다. . FYI : 프로덕션 환경에서 POST 메소드가 올바르게 작동하고 있습니다.프로덕션 환경에서 매개 변수 가져 오기

다음은 컨트롤러 가져 오기 기능입니다.

public function get($id) 
{ 
    $abcModel = new ABCModel(); 
    error_log("tournamentId:".$this->params()->fromQuery('tournamentId')); 
    $query = $this->getRequest()->getQuery(); 
    error_log("tournamentId1:".$query['tournamentId']); 
    error_log("tournamentId2:".$this->getEvent()->getRouteMatch()->getParam('tournamentId')); 
    error_log("tournamentId3:".$this->params('tournamentId')); 
    error_log("tournamentId4:".$this->params()->fromRoute('tournamentId')); 
} 

이 질문에 대한 답을 모두 시도했습니다. ZF2: Get url parameters in controller.

어떤 이유 일 수 있는지 알 수 있습니까?

경로의 빛이 도움이됩니다.

+1

사람들은 왜 우리에게 문제를 일으키는 코드를 표시하지 않고 답변을 얻으려고합니까? : S – Sam

+0

@sam보세요 .. –

+0

디버그 정보도 필요합니다. 'var_dump ($ request-> getQuery(), $ _GET)와 같이' – Sam

답변

1

프로덕션 환경에서 쿼리 문자열을 사용하려면 몇 가지 대체 방법을 사용해야합니다. 경로와 함께 매개 변수를 추가하여 쿼리 문자열 값을 저장할 수 있습니다. 그러나 쿼리 문자열은 "?"를 사용하는 대신 경로와 쿼리 문자열 사이에 "/"기호를 사용하여 전달해야합니다. 표.

/route-name/key=value&key=value1 

및 라우팅 구성 당신은 쿼리 문자열을 추출하고 쿼리 문자열의 키 => 값 쌍을 포함하는 배열을 반환하는 함수를 만들 수 있습니다

'router' => array(
'routes' => array(
    '<route-name>' => array(
     'type' => 'segment', 
     'options' => array(
      'route' => '<route-name>[/:action][/:queryPara][/]', 
      'constraints' => array(
       'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
       'queryPara' => '[a-zA-Z][a-zA-Z0-9_-&=]*', 
      ), 
      'defaults' => array(
       'controller' => 'Application\Controller\Index', 
       'action' => 'index', 
      ) 
     ), 
    ), 
)), 

을해야합니다.

그리고 컨트롤러에 당신은 당신이

$this->params('queryPara') 

이 희망 문자열을 얻을 것이다 다음 문을 사용하여 경로 이름 뒤에 "/ queryPara"부분에 저장됩니다 쿼리 문자열을 전달하여 함수를 호출해야 도움이

감사합니다.

+0

'prod 환경에서 쿼리 문자열을 사용하려면 몇 가지 대안을 사용해야합니다. '그렇지 않으면 쿼리 문자열 params는'$ this-> getRequest() -> getQuery(); '를 통해 사용할 수 있습니다. 모든 환경에서. – NDM