无法在生产中获取获取参数

时间:2014-03-28 12:03:38

标签: php zend-framework2 amazon-dynamodb http-get

我已经使用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 个答案:

答案 0 :(得分: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',
            )
        ),
    ),
)),

您可以创建一个函数来提取查询字符串并返回包含查询字符串的key =&gt;值对的数组。

在控制器中,您必须通过传递查询字符串来调用该函数,该字符串将存储在路径名称后面的“/ queryPara”部分中,使用以下语句,您将获得字符串

$this->params('queryPara')

希望有所帮助

由于