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

Laravel 9扩展包路由显式/隐式模型绑定失效问题

Laravel 9扩展包路由模型绑定失效修复方案

问题根因

隐式、显式路由模型绑定的解析逻辑,全部依赖Illuminate\Routing\Middleware\SubstituteBindings中间件执行。你在扩展包服务提供者中手动注册路由时,仅给路由组配置了api前缀,没有引入对应场景的中间件组,路由请求不会经过绑定解析中间件,因此控制器中$medium参数无法被自动注入模型实例,手动配置的Route::model显式绑定也不会生效。

修复步骤

修改扩展包服务提供者中的路由注册逻辑,给路由组匹配对应场景的官方中间件组即可,和应用原生路由运行环境保持一致:

public function boot() 
{
    Route::group([
        'prefix' => 'api',
        'middleware' => 'api' // 引入默认api中间件组,已内置SubstituteBindings等必要中间件
    ], function () {
        $this->loadRoutesFrom(__DIR__ . '/../routes/api.php');
    });
}

修改完成后执行路由清缓存命令:

php artisan route:clear

原有控制器中的隐式绑定代码不需要做任何修改即可正常运行。

补充说明

  • 如果扩展包路由用于web场景,将中间件参数替换为web即可,不建议单独挂载SubstituteBindings中间件,直接使用官方封装好的中间件组可以避免遗漏cookie加密、请求参数校验等其他必要逻辑
  • 你之前手动调用Medium::find($id)可以正常运行,是因为该逻辑直接在控制器内执行,不依赖路由绑定中间件,和路由解析流程无关
  • 只要模型本身可以正常执行数据库查询、命名空间引用路径正确,不需要对模型做额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:15:34