无法从zend Framework 2中的url获取路由名称 [英] unable to get route name from url in zend framework 2

查看:69
本文介绍了无法从zend Framework 2中的url获取路由名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Zend Framework 2,这是我的代码:

I'm using Zend Framework 2, this is my code:

$prevsingletrackurl = $this->getRequest()->getHeader('Referer')->getUri();

从控制器方法中定义的这段代码中,我得到了以前的URL,现在我需要要从中了解一些信息,它包含我自己需要的路由,控制器,方法。

From this code which is defined in a controller's method I'm getting previous URL, now what I need to know some information of this from this, it contains which route, controller, method for my own requirement.

推荐答案

此代码i在控制器操作方法中使用过

This code i have used inside a controller action method

$ request = $ this-> getRequest();
$ getHeaderReferer = $ request-> getHeader('Referer');

$request = $this->getRequest(); $getHeaderReferer=$request->getHeader('Referer');

      if (!empty($getHeaderReferer))
      {


           $prevsingletrackurl = $getHeaderReferer->getUri(); //  get previous url
             //echo "<br>previous usrl=>".$prevsingletrackurl;        
           $controller = $this->getEvent()->getRouteMatch()->getParam('controller'); // get controller name




             //**** code to get previous url route , controller name , action/method name starts


               $request->setUri($prevsingletrackurl);
               $router =$this->getServiceLocator()->get('Router');// this gives instance of /Zend/Mv/Router/Http/TreeRouteStack 

               //echo "<br>router=>".$router->toString();
               $routeMatch = $router->match($request); // this gives instance of /Zend/Mv/Router/Http/RouteMatch

               $routename="";




               if( $routeMatch instanceof RouteMatch )
               {

                     $urlwholeroutedataAr=$routeMatch->getParams();

                    if(!empty($urlwholeroutedataAr))
                    {
                         $controllerdata=$urlwholeroutedataAr['controller'];
                         $actionmethod=$urlwholeroutedataAr['action'];

                         if(array_key_exists('trackdata',$urlwholeroutedataAr))
                         {
                            $trackdata=$urlwholeroutedataAr['trackdata'];
                         }

                          $controllerdataAr=explode("\\",$controllerdata);

                          if(count($controllerdataAr)>0)
                          {
                            $controllername=end($controllerdataAr);
                          }



                    }

                     $routename=$routeMatch->getMatchedRouteName();
                     }
}

这篇关于无法从zend Framework 2中的url获取路由名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆