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,......"