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 通过方法获取路由的主要内容,如果未能解决你的问题,请参考以下文章