2017-10-18 29 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

只有在當前路線上。我需要找到只給出路由名稱的動作。 –

相關問題