Как получить текущий контроллер и действие в контроллере
Как я могу получить текущий контроллер и действия в люмен
Допустим, у меня есть пользовательский ресурс в маршрутизации. Тогда, если я получу доступ к 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);
}
У меня это сработало. Надеюсь, это вам тоже поможет. Спасибо, что задали этот вопрос.