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

Abe*_*vez 7 php binding routes laravel

在我,routes.php我有这个:

Route::get('user/{user}/permissions/','UserController@permissions')->name('user.permissions');
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我有:

public function permissions(User $user){
   dd($user);
}
Run Code Online (Sandbox Code Playgroud)

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

如果我使用:

public function permissions($user){
   dd(User::find($user));
}
Run Code Online (Sandbox Code Playgroud)

完美的工作!

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

lag*_*box 15

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

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

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

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

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

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

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

Laravel 5.3 Docs - 升级 - 中间件 - 绑定替换中间件