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

时间:2017-10-18 14:17:08

标签: php laravel routing laravel-5.5

我的路线定义为:

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

我知道根据路线名称,我可以获得网址:

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

我也知道在给定动作的情况下,我可以获得相同的URL:

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

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

e.g。也许是这样的:

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

2 个答案:

答案 0 :(得分:2)

您可以使用路线立面。

\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" => [],
]
*/

答案 1 :(得分:0)

您可以从请求中获取路线并致电getActionName(),例如:

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