Laravel 通过方法获取路由

Posted

技术标签:

【中文标题】Laravel 通过方法获取路由【英文标题】:Laravel get routes by method 【发布时间】: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一样的事情吗?获取所有路由,遍历它们并创建自己的数组? 【参考方案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']

【讨论】:

以上是关于Laravel 通过方法获取路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中 GET 获取路由参数

Laravel - 保护 API 路由

【PHP】laravel中获取当前路由名称

Laravel 5.6 artisan 命令从 URI 获取路由

访问 Vue 模板中的所有 Laravel 路由

测试 laravel 路由识别方法类型