You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Laravel中指定名称路由组内的所有路由

Laravel 没有内置直接按路由组as前缀获取路由的方法,但可以基于官方提供的路由集合API自己封装,实现成本很低:

实现代码

你可以将以下函数放入项目的全局辅助函数文件(通常是app/helpers.php,如果没有可以自行创建后在composer.json的autoload字段中引入):

function getRoutesByGroup(string $groupAsPrefix): array
{
    // 获取项目所有已注册路由
    $allRoutes = \Illuminate\Support\Facades\Route::getRoutes();
    $matchedRoutes = [];

    foreach ($allRoutes as $route) {
        $routeName = $route->getName();
        // 路由组的as前缀会自动和子路由名通过.拼接,以此为判断依据
        if ($routeName && str_starts_with($routeName, $groupAsPrefix . '.')) {
            $matchedRoutes[] = $route;
        }
    }

    return $matchedRoutes;
}

如果你的PHP版本低于8.0,没有内置str_starts_with方法,可以替换判断逻辑为:

if ($routeName && substr($routeName, 0, strlen($groupAsPrefix . '.')) === $groupAsPrefix . '.')

使用示例

调用你想要的getRoutesByGroup('main')即可拿到符合要求的路由集合,每个元素都是Illuminate\Routing\Route对象,你可以按需提取属性:

$routes = getRoutesByGroup('main');
foreach ($routes as $route) {
    // 获取路由URI
    echo $route->uri();
    // 获取完整路由名
    echo $route->getName();
    // 生成访问链接
    echo route($route->getName());
}

注意事项

你提供的路由定义中有两个同名的Home路由,同组内路由名不能重复,否则后注册的路由会覆盖先注册的同名路由,实际使用时需要修正。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 12:30:03