In my routes.php
I have this:
Route::get('user/{user}/permissions/','UserController@permissions')->name('user.permissions');
In my controller I have:
public function permissions(User $user){
dd($user);
}
$user is empty object (like new user; without attributes)
if I use:
public function permissions($user){
dd(User::find($user));
}
Works perfectly!!
I have previously Laravel 5.2 and this code works fine but in Laravel 5.5 it doesn't work, any ideas why?
Sounds like you upgraded from 5.2 up to ... some version.
Laravel 5.3 uses the SubstitueBindings
middleware to do the implicit and explicit bindings, it is no longer done via the router before the middleware stack.
If you upgraded and did not add this middleware to any of the groups, you will not have your route model bindings as the middleware is responsible for substituting the parameter with the binding.
"Route model binding is now accomplished using middleware. All applications should add the
Illuminate\Routing\Middleware\SubstituteBindings
to yourweb
middleware group in yourapp/Http/Kernel.php
file:
\Illuminate\Routing\Middleware\SubstituteBindings::class,
You should also register a route middleware for binding substitution in the
$routeMiddleware
property of your HTTP kernel:
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
..."Laravel 5.3 Docs - Upgrade - Middleware - Binding Substitution Middleware
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With