【问题标题】:Laravel get routes by methodLaravel 通过方法获取路由
【发布时间】:2019-02-10 08:16:25
【问题描述】:

如何获取项目中具有GET 方法的所有路由?我试过了:

Route::getRoutes() 给了我所有的路线,但不知何故我无法通过方法过滤它们。

Route::getRoutes()->routes 会很好,但路由是受保护的财产,我看不到任何 getter

【问题讨论】:

  • Route::getRoutes() 给你什么?你不能把结果过滤成只得到吗?显然它给了你一个数组,所以你可以通过array_filter 运行它来只得到你想要的
  • 我得到一个集合:` RouteCollection {#28 ▼ #routes: array:7 [▼ "GET" => array:124 [▶] "HEAD" => array:124 [▶] " POST" => array:63 [▶] "PUT" => array:1 [▶] "PATCH" => array:1 [▶] "DELETE" => array:21 [▶] "OPTIONS" => array: 1 [▶] ] ...我只想从中获取 GET 路线
  • 在这种情况下,Route::getRoutes()['GET'] 你的评论有点难以阅读
  • 还有getRouteByMethod()见这个api页面laravel.com/api/5.6/Illuminate/Routing/…
  • 你不能做和this answer一样的事情吗?获取所有路由,遍历它们并创建自己的数组?

标签: laravel laravel-5.6


【解决方案1】:

你可以创建小的辅助方法。

function getRoutesByMethod(string $method){
    $routes = \Route::getRoutes()->getRoutesByMethod();
    return $routes[$method];
}

然后在你的应用程序中使用它

$postRoutes = getRoutesByMethod("POST");

【讨论】:

    【解决方案2】:

    RouteCollection 有一个方法可以按路由的方法(例如 GET)对路由进行排序。

    您可以如下使用它来获取 GET 路由:

    Route::getRoutes()->getRoutesByMethod()['GET']
    

    并获得 POST 路线:

    Route::getRoutes()->getRoutesByMethod()['POST']
    

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 2020-04-11
      • 2016-06-16
      • 2018-04-04
      • 2014-12-15
      • 2018-04-30
      • 1970-01-01
      • 2015-11-07
      • 2017-09-16
      相关资源
      最近更新 更多