2014-03-28 51 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