【问题标题】:How to get the action from a given laravel route name?如何从给定的 laravel 路由名称中获取操作?
【发布时间】:2017-10-18 14:17:08
【问题描述】:

我的路线定义为:

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

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

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

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

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

但是如何在给定路由名称的情况下获取操作?

例如也许是这样的:

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

【问题讨论】:

  • 你search了吗??
  • @kerbholz 仅在您在当前路线上时才有效。我需要不同路线的操作名称,我只有名称。
  • @Onix 仅在您在当前路线上时才有效。我需要不同路线的操作名称,我只有名称。

标签: php laravel routing laravel-5.5


【解决方案1】:

您可以使用路线外观。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 只有在当前路线上。我需要找到仅给定路线名称的操作。
    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2018-04-04
    • 2015-04-26
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多