2017-10-18 31 views
0

我已经定义路线为:如何从一个给定的laravel路径名称获取动作?

Route::name('foo')->get('/foo', '[email protected]'); 

我知道给出的路线名称,我能得到的网址:

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

我也知道给出的行动,我可以得到相同的网址:

action('[email protected]'); // "http://localhost/foo" 

但是我怎样才能得到给定路线名称的动作呢?

例如也许是这样的:

getActionFromRouteName('foo'); // "[email protected]" 
+0

你有没有[搜索](https://stackoverflow.com/questions/26840278/laravel-5-how-to-get-路由动作名称#26841923)? – kerbholz

+0

https://stackoverflow.com/a/26841923/4668162 – Onix

+1

@kerbholz只有在当前路线上才有效。我需要一个不同路线的行动名称,为此我只有名字。 –

回答

2

你可以使用路由门面。

\Route::getRoutes()->getByName('test')->getActionName() 
// "App\Http\Controllers\[email protected]" 

或整个动作数据数组:

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

/* 
[ 
"middleware" => "web", 
"as" => "test", 
"uses" => "App\Http\Controllers\[email protected]", 
"controller" => "App\Http\Controllers\[email protected]", 
"namespace" => "App\Http\Controllers", 
"prefix" => null, 
"where" => [], 
] 
*/ 
0

您可以从请求抢航线,并呼吁getActionName(),是这样的:

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

只有在当前路线上。我需要找到只给出路由名称的动作。 –

相关问题