如何从zf2中的url获取路由

时间:2014-10-30 08:35:03

标签: routes zend-framework2

我需要在zf2登录后进行重定向 例如,使用url登录页面 /user/login?redirect=http%3A%2F%site.loc%2Fcategory%test 我需要从网址获取路由 也许一些

$router->getRouteFromUri($uri);

2 个答案:

答案 0 :(得分:2)

所以@cptnk说 最好的方法是

        $request = new Request();
        $request->setMethod(Request::METHOD_GET);
        $request->setUri($uri);

        $this->router->match($request);

返回带有参数的路径

答案 1 :(得分:1)

请求实例可用于返回请求参数。这可以使用以下任何一种方式从控制器中获取。

$request = $this->getRequest();
$request = $this->getEvent()->getRequest();
$request = $this->getServiceLocator()->get('request');

但是,如果您需要从控制器访问路由或任何其他请求参数,则可以使用Zend\Mvc\Controller\Plugin\Params

$redirect = $this->params('redirect', false); 
// or
$redirect = $this->params()->fromQuery('redirect', false);

如果您需要生成该网址,您可以使用网址插件Zend\Mvc\Controller\Plugin\Url

$this->url()->fromRoute(
    $nameOfRoute, // use null for last matched route
    $arrayOfRouteParams,
    $booleanShouldReuseMatchedParams,
    array(
        'query' => array('redirect' => $redirctUrl)
    )
);

上面只是一个便利类,可以直接用路由器手动组装URL。