gpt4 book ai didi

php - 通过 Route::getRoutes() laravel 方法获取特定路径的路由

转载 作者:行者123 更新时间:2023-12-03 18:39:57 24 4
gpt4 key购买 nike

问题很明显。

我们知道使用 Route::getRoutes() 方法可以像这样获取 laravel 项目中所有定义的路由:

$routeCollection = Route::getRoutes();
$arr = [];

foreach ($routeCollection as $value) {
$arr[] = $value->getPath();
}

return array_unique($arr);

但我想在特定路径中获取所有已定义的路由,例如 /admin

我认为可以将路径名传递给 getRoutes() 来执行此操作,但对我不起作用。

我该怎么做?

最佳答案

这是一个利用 Laravel 集合的解决方案:

$routes = collect(Route::getRoutes()->getRoutes())->reduce(function ($carry = [], $route) {
!starts_with($route->getPath(), 'admin') ?: $carry[] = $route->getPath();

return $carry;
});

现在 routes 数组将返回以 admin 开头的路由路径列表。这是那里发生的事情:

  • 使用 Route::getRoutes() 将返回 RoutesCollection它有自己的 getRoutes 方法,该方法返回 Illuminate\Routing\Route 的平面数组实例。然后,您可以将其传递给 collect 方法,该方法将返回所有这些路由的 Collection

  • 现在您只需删除不以 admin 开头的值。如果这是一个简单的值数组,可以使用 filter 轻松实现方法,但由于这是一个对象数组,并且您希望只能通过对 getPath 的方法调用访问 path 字符串,因此集合的 reduce可以改用方法作为解决方法。

另外,您会注意到条件检查路径是否以 admin 开头,而不是 /admin。这是因为 Laravel 路由器会在构建路由集合时自动去除前导斜线。


您可以在 Laravel Documentation 中阅读有关集合的更多信息.

关于php - 通过 Route::getRoutes() laravel 方法获取特定路径的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com