【问题标题】:How to get current Controller & Action in controller如何在控制器中获取当前控制器和动作
【发布时间】:2017-05-04 08:19:45
【问题描述】:

如何在 Lumen 中获取当前控制器和动作

假设我在路由中有一个用户资源。 那么如果我访问user/show/id,我可以在Controller中获取当前的控制器名称和动作名称吗?

class Controller extends BaseController
{
    public function __construct()
    {
         $controllerName = ???;
         $actionName = ??? 
    }
}

【问题讨论】:

    标签: lumen-5.3


    【解决方案1】:

    这是获取动作和控制器名称的一个简单技巧

    class Controller extends BaseController
    {
      public function __construct()
      {
        $this->_request = app('Illuminate\Http\Request');
        list($controllerName ,$actionName)=explode('@',$this->_request->route()[1]['uses']);
        print_r($controllerName);
        print_r($actionName);
      }
    }
    

    【讨论】:

      【解决方案2】:

      有了这个,你将拥有 Action 和 Controller 的名称(只是没有路由的名称):

      class Controller extends BaseController
      {
          public function __construct()
          {
              list($controllerName, $actionName) = explode('@', substr(strrchr($request->route()[1]['uses'], '\\'), 1));
          }
      }
      

      【讨论】:

        【解决方案3】:

        我已经使用并签入了 Laravel / Lumen 8 版本来获取控制器中的控制器和动作名称

        public function getControllerActionName(){
                $this->_request = app('Illuminate\Http\Request');
                list($controllerName ,$actionName) = explode('@',$this->_request->route()[1]['uses']);
                $controllerName = strtolower(str_replace("App\Http\Controllers\\",'',$controllerName));
                $actionName = strtolower($actionName);
                return array('controller' => $controllerName, 'action' => $actionName);
            }
        

        它对我有用。我希望,这也会对你有所帮助。感谢您提出这个问题。

        【讨论】:

        • 您可以通过在任何控制器的操作中调用此函数来查看结果,例如。 print_r($this->getControllerActionName());这将导致您喜欢 Array ( [controller] => userscontroller [action] => getprofiledetail )
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多