Как получить текущий контроллер и действие в контроллере

Как я могу получить текущий контроллер и действия в люмен

Допустим, у меня есть пользовательский ресурс в маршрутизации. Тогда, если я получу доступ к user/show/idя могу получить текущее имя контроллера и имя действия в контроллере?

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

3 ответа

При этом у вас будет имя Action и Controller (просто имя без маршрута):

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

Я использовал и проверял версию 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);
    }

У меня это сработало. Надеюсь, это вам тоже поможет. Спасибо, что задали этот вопрос.

Другие вопросы по тегам