Laravel 5.x如何使用路由名称获取控制器名称?

时间:2019-03-01 15:39:05

标签: php laravel

我正在尝试使用路由名称来获取控制器名称。

我有一条路线['dashboard'],我想获取控制器名称,以便稍后在同一控制器上执行方法。

我阅读了文档,但可以找到一种方法或方法。

https://laravel.com/api/5.7/Illuminate/Routing/Route.html

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:4)

例如,这将为您提供register路线的信息:

Route::getRoutes()->getByName('register')->action;

这将为您提供所需的所有信息的数组:

[
     "middleware" => [
       "web",
     ],
     "uses" => "App\Http\Controllers\Auth\RegisterController@showRegistrationForm",
     "controller" => "App\Http\Controllers\Auth\RegisterController@showRegistrationForm",
     "namespace" => "App\Http\Controllers",
     "prefix" => null,
     "where" => [],
     "as" => "register",
   ]

如果您大量这样做,则可以在RouteServiceProvider中添加宏:

public function register()
{
    Route::macro('getByName', function($name) {
        return $this->getRoutes()->getByName($name);
    });
}

现在您可以简单地做 Route::getByName('register')获取所有路线信息。

答案 1 :(得分:0)

您可以尝试:

get_class(\Request::route()->getController());