2016-08-02 71 views
1

我正在休息api和accessToken onBootstrp,以便可以驗證並返回,如果沒有通過驗證和授權,並且如果發現獲取用戶標識並設置爲會話,以便它可以通過http請求。 我的API類似這樣的電話:訪問查詢參數onBootstrap ZF2

/待辦事項/ 5的accessToken = 75a65839e7041da05a4257e441d778af

我試過這樣

$eventManager->attach('route', function(MvcEvent $mvcEvent) { 
     $params = $mvcEvent->getRouteMatch()->getParams(); 
     print_r($params); 
    }); 

我拿到了編號爲5,但沒有得到的accessToken

回答

1

如何檢索請求參數在ModuleonBootstrap()功能:

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); 
    }); 

} 
1

來自$mvcEvent->getRouteMatch()->getParams();的params會爲您提供在路由數組中聲明的所有參數(來自配置)。

此URL的部分格式:accessToken=75a65839e7041da05a4257e441d778af 不屬於此路由的配置,但由另一部分給出。

這就是爲什麼你的print_r不會顯示這個小東西。

+0

這是正確的,但是你可以使用請求實例來獲取*未經過濾*查詢參數。 '$ event-> getRequest() - > getQuery('accessToken');' – AlexP

+0

這也是正確的! @AlexP – Hooli

+0

@Hooli,你是對的..!我改變了路由,例如''route'=>'/:controller [/:id] [/ accessToken /:accessToken]'',並且能夠獲得可調整的accessToken。但@AlexP你的答案幫助了我。 :) –