2014-03-28 48 views
1

我已經開發了帶有Zf2和DynamoDB的API,我可以從本地機器中獲取GET參數的值,但是當我上傳API的生產 時無法從GET參數獲取值。 供參考: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