【问题标题】:Laravel 5.x How to obtain the controller name using a route name?Laravel 5.x 如何使用路由名称获取控制器名称?
【发布时间】:2019-07-23 16:15:14
【问题描述】:

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

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

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

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

任何建议将不胜感激。

【问题讨论】:

  • 通过请求我会得到当前的路线,我需要传递一个路线名称,而不是当前的。
  • 为什么 getController() 对你不起作用? laravel.com/api/5.7/Illuminate/Routing/…
  • @MuratTutumlu 这将适用于当前路由实例。提问者希望传入一个字符串路由名称并取回处理程序。

标签: php laravel


【解决方案1】:

例如,这将为您提供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')获取所有路线信息。

【讨论】:

  • 你说得对,这就是我要找的东西!谢谢!
【解决方案2】:

你可以试试:

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

【讨论】:

  • 如果我需要所有控制器怎么办?例如,我的项目中有 5 个控制器,我想获取所有这 5 个控制器的名称?
  • @user1477132 这是一个问题而不是评论。您可以在这里提出一个新问题:stackoverflow.com/questions/ask
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2015-10-25
相关资源
最近更新 更多