我已经使用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。
任何人都知道这可能是什么原因吗?
路径上的任何灯光都会有所帮助。
答案 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')
希望有所帮助
由于