Php 引导ZF2上的访问查询参数

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 =

我正在开发RESTAPI和accessToken onBootstrp,以便在未通过验证和授权的情况下进行验证并返回,如果找到,则获取用户id并设置为会话,以便在整个http请求中都可用。 我的api调用如下:

/todos/5?accessToken=75a65839e7041da05a4257e441d778af

我试过这样做

$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获取它还是将它放入路由中是一种好的做法。你的建议。。!!如果需要的话,我建议你把它作为一个参数放在你的路线上