如何在 Lumen 中获取当前控制器和动作
假设我在路由中有一个用户资源。那么如果我访问user/show/id
,我可以在控制器中获取当前控制器名称和动作名称吗?
class Controller extends BaseController
{
public function __construct()
{
$controllerName = ???;
$actionName = ???
}
}
如何在 Lumen 中获取当前控制器和动作
假设我在路由中有一个用户资源。那么如果我访问user/show/id
,我可以在控制器中获取当前控制器名称和动作名称吗?
class Controller extends BaseController
{
public function __construct()
{
$controllerName = ???;
$actionName = ???
}
}
这是获取动作和控制器名称的一个简单技巧
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);
}
它对我有用。我希望,这也会对你有所帮助。感谢您提出这个问题。
有了这个,您将拥有 Action 和 Controller 名称(只是没有路由的名称):
class Controller extends BaseController
{
public function __construct()
{
list($controllerName, $actionName) = explode('@', substr(strrchr($request->route()[1]['uses'], '\\'), 1));
}
}