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

Laravel Lumen路由分组内访问路由参数提示闭包参数过少报错如何解决

错误原因

路由组$router->group()的闭包只会传入路由实例这1个参数,你写的闭包要求接收$request和$module两个参数,自然会触发参数不足的报错。
另外路由前缀里的{module}占位符属于路由参数,只有当实际请求匹配到该路由组下的具体路由时才会被解析,不会在定义路由组的阶段就直接注入到闭包中。

解决方法

如果你的需求是根据不同的module加载对应的路由文件,可以先枚举所有支持的模块,循环定义路由组即可,示例代码如下:

$app->router->group([
    'namespace' => 'App\\Http\\Controllers',
], function ($router) use ($version) {
    // 此处可以手动定义模块列表,也可以扫描routes/v1目录下的路由文件自动获取
    $availableModules = ['user', 'goods', 'order'];
    foreach ($availableModules as $module) {
        $router->group([
            'namespace'  => $version,
            'prefix'     => "api/$version/{contest}/$module",
            'middleware' => 'App\\Http\\Middleware\\COMMON\\DefineContest',
        ], function ($router) use ($module) {
            require __DIR__ . "/../routes/v1/{$module}.routes.php";
        });
    }
});

如果后续在处理请求的过程中需要获取路由里的module参数,可以在中间件或者控制器方法中调用$request->route('module')获取。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:05