如何从给定的 laravel 路由名称中获取操作?

How to get the action from a given laravel route name?

我将路线定义为:

Route::name('foo')->get('/foo', 'FooController@index');

我知道给定路由名称,我可以得到 URL:

route('foo'); // "http://localhost/foo"

我也知道给定的动作,我可以得到相同的URL:

action('FooController@index'); // "http://localhost/foo"

但是如何根据路由名称获取操作?

例如也许是这样的:

getActionFromRouteName('foo'); // "FooController@index"

您可以从请求中获取路由并调用 getActionName(),例如:

public function someFunction(Request $request)
{
    $request->route()->getActionName();
}

您可以使用 Route Facade。

\Route::getRoutes()->getByName('test')->getActionName() 
// "App\Http\Controllers\TestController@index"

或包含整个动作数据的数组:

\Route::getRoutes()->getByName('test')->getAction()

/*
[
 "middleware" => "web",
 "as" => "test",
 "uses" => "App\Http\Controllers\TestController@index",
 "controller" => "App\Http\Controllers\TestController@index",
 "namespace" => "App\Http\Controllers",
 "prefix" => null,
 "where" => [],
]
*/