如何从一个给定的laravel路径名称获取动作?
问题描述:
我已经定义路线为:如何从一个给定的laravel路径名称获取动作?
Route::name('foo')->get('/foo', '[email protected]');
我知道给出的路线名称,我能得到的网址:
route('foo'); // "http://localhost/foo"
我也知道给出的行动,我可以得到相同的网址:
action('[email protected]'); // "http://localhost/foo"
但是我怎样才能得到给定路线名称的动作呢?
例如也许是这样的:
getActionFromRouteName('foo'); // "[email protected]"
答
你可以使用路由门面。
\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" => [],
]
*/
答
您可以从请求抢航线,并呼吁getActionName()
,是这样的:
public function someFunction(Request $request)
{
$request->route()->getActionName();
}
+0
只有在当前路线上。我需要找到只给出路由名称的动作。 –
你有没有[搜索](https://stackoverflow.com/questions/26840278/laravel-5-how-to-get-路由动作名称#26841923)? – kerbholz
https://stackoverflow.com/a/26841923/4668162 – Onix
@kerbholz只有在当前路线上才有效。我需要一个不同路线的行动名称,为此我只有名字。 –