框架版本 : laravel 5.2

问题描述

需要对已存在的模型额外做一个添加筛选条件的列表,将之前的控制器、路由以及涉及到路由跳转的模型都复制了一份。

# 用户管理
Route::resource('user', 'UserController', ['except' => ['show']]);
# 增加用户角色为代理商的路由
Route::resource('agent', 'AgentController', ['except' => ['show']]);

控制器中涉及到注入模型对象的方法都会报错,百度问题有提到添加路由中间件的: \Illuminate\Routing\Middleware\SubstituteBindings::class

但我的添加的路由没有使用自定义的 web 中间件,且这个路由中间件类添加到路由组中间件中是找不到该类的。并且之前的用户控制器也没有使用这样的中间件,但模型注入是正常的。

之后突然意识到,可能是路由定义的参数不对。用户控制器默认注入的变量是 $user,而代理商控制器默认注入的变量是 $agent,而代码里 public function edit(User $user) 显然是对应不上 $agent 的,应该改成 public function edit(User $agent)

修改之后,页面访问正常。