Laravel 5.5路由中的模型绑定不起作用

时间:2017-12-13 00:43:22

标签: php laravel binding routes

在我的routes.php我有这个:

Route::get('user/{user}/permissions/','UserController@permissions')->name('user.permissions');

在我的控制器中我有:

public function permissions(User $user){
   dd($user);
}

$ user 对象(例如新用户; 没有属性

如果我使用:

public function permissions($user){
   dd(User::find($user));
}

完美运作!!

我以前使用Laravel 5.2并且此代码工作正常但是在Laravel 5.5中它不起作用,任何想法为什么?

1 个答案:

答案 0 :(得分:10)

听起来你从5.2升级到......某个版本。

Laravel 5.3使用SubstitueBindings中间件进行隐式和显式绑定,在中间件堆栈之前不再通过路由器完成。

如果您升级并且没有将此中间件添加到任何组,则不会有路由模型绑定,因为中间件负责用绑定替换参数。

  

“路由模型绑定现在使用中间件完成。所有应用程序都应将Illuminate\Routing\Middleware\SubstituteBindings添加到web文件中的app/Http/Kernel.php中间件组:

     

\Illuminate\Routing\Middleware\SubstituteBindings::class,

     

您还应该在HTTP内核的$routeMiddleware属性中注册路由中间件以进行绑定替换:

     

'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,   ......“

     

Laravel 5.3 Docs - Upgrade - Middleware - Binding Substitution Middleware