Php 引导ZF2上的访问查询参数
我正在开发RESTAPI和accessToken onBootstrp,以便在未通过验证和授权的情况下进行验证并返回,如果找到,则获取用户id并设置为会话,以便在整个http请求中都可用。 我的api调用如下: /todos/5?accessToken=75a65839e7041da05a4257e441d778af 我试过这样做Php 引导ZF2上的访问查询参数,php,zend-framework2,Php,Zend Framework2,我正在开发RESTAPI和accessToken onBootstrp,以便在未通过验证和授权的情况下进行验证并返回,如果找到,则获取用户id并设置为会话,以便在整个http请求中都可用。 我的api调用如下: /todos/5?accessToken=75a65839e7041da05a4257e441d778af 我试过这样做 $eventManager->attach('route', function(MvcEvent $mvcEvent) { $params =
$eventManager->attach('route', function(MvcEvent $mvcEvent) {
$params = $mvcEvent->getRouteMatch()->getParams();
print_r($params);
});
我从
$mvcEvent->getRouteMatch()->getParams()获取了id为5,但没有获取accessToken的参数代码>提供路由数组中声明的所有参数(从配置中)
此url部分的格式:accessToken=75a65839e7041da05a4257e441d778af
不属于此路由的配置,但由另一部分提供
这就是为什么您的打印没有显示这个小参数。如何在模块onBootstrap()函数中检索请求参数:
public function onBootstrap(MvcEvent $event)
{
$application = $event->getApplication();
$application->getEventManager()->attach('route', function(MvcEvent $event) {
$request = $event->getRequest();
$routeMatch = $event->getRouteMatch();
// Route params - $routeParams is an array
$routeParams = $routeMatch->getParams();
// Retrieveing Query and POST params is only possible if the request is an instance of \Zend\Http\Request
if ($request instanceof \Zend\Http\Request) {
// Query params - $queryParams is an instance of \Zend\Stdlib\Parameters
$queryParams = $request->getQuery();
// POST params - $postParams is an instance of \Zend\Stdlib\Parameters
$postParams = $request->getPost();
print_r($queryParams);
print_r($postParams);
}
print_r($routeParams);
});
}
这是正确的,但是您可以使用请求实例获取未过滤的查询参数<代码>$event->getRequest()->getQuery('accessToken')代码>@Hooli,你说得对。。!!我更改了类似“route”=>“/:controller[/:id][/accessToken/:accessToken]”的路由,并且能够使accessToken有效。但是@AlexP你的回答帮助了我@AlexP,因为accessToken是我的api所必需的参数,所以从queryParams获取它还是将它放入路由中是一种好的做法。你的建议。。!!如果需要的话,我建议你把它作为一个参数放在你的路线上