【发布时间】:2015-08-07 04:40:12
【问题描述】:
我是 Laravel 的新手,我想在 beforefilter middelware 中获取请求的控制器和操作的名称。
谢谢, DJ
【问题讨论】:
我是 Laravel 的新手,我想在 beforefilter middelware 中获取请求的控制器和操作的名称。
谢谢, DJ
【问题讨论】:
你可以添加这个(Laravel v7 及以上)
use Illuminate\Support\Facades\Route;
....
Route::getCurrentRoute()->getActionMethod()
【讨论】:
<?php echo request()->route()->getActionMethod(); ?> 你也可以像这个 Helper 函数一样使用
Laravel 5.6:
class_basename(Route::current()->controller);
Laravel 5.5 及更低版本:
您可以使用Route::currentRouteAction() 检索当前操作名称。不幸的是,这个方法将返回一个完全命名空间的类名。所以你会得到类似的东西:
App\Http\Controllers\FooBarController@method
然后只需将方法名称和控制器名称分开:
$currentAction = \Route::currentRouteAction();
list($controller, $method) = explode('@', $currentAction);
// $controller now is "App\Http\Controllers\FooBarController"
$controller = preg_replace('/.*\\\/', '', $controller);
// $controller now is "FooBarController"
【讨论】:
Illuminate\Routing\Route 中的runController 方法使用explode 以完全相同的方式确定需要为匹配的路由执行的$class 和$method。
class_basename(Route::current()->controller) 也可以解决问题。 L5.6 测试