Laravel nos permite obtener modelos directamente en los parámetros de nuestras acciones, sin necesidad del llamado explícito a métodos de Eloquent como find
or findOrFail
, en esta lección veremos el uso de esta característica conocida como Route Model Binding:
Repositorio
Ver el código de esta lección en GitHub
Notas
En lugar de obtener el usuario utilizando los métodos find
o findOrFail
podemos obtenerlo directamente como parámetro de la acción:
public function show(User $user) { return view('users.show', compact('user')); }
Para que esto funcione, nota que el nombre del parámetro en la declaración de la ruta debe coincidir con el nombre del parámetro en la declaración del método:
Route::get('/usuarios/{user}', 'UserController@show'); // y en el controlador: use App\User; class UserController { public function show(User $user) { //... } }
Además el tipo del parámetro debe ser, por supuesto, un modelo de Eloquent (en nuestro ejemplo es App\User
).
Material Relacionado
Puedes ver más detalles de este feature en el videotutorial: Asociar rutas a modelos de Eloquent con Implicit Route Binding.
Puedes aprender más sobre desarrollo con Laravel y TDD en el Curso: crea una aplicación con Laravel
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Manejo de errores 404 en Laravel Lección siguiente Rutas con POST y protección contra ataques de tipo CSRF en Laravel