Enlace Explícito
En Laravel, no estás obligado a utilizar la resolución de modelos implícita basada en convenciones para usar el enlace de modelos. También puedes definir explícitamente cómo los parámetros de la ruta corresponden a los modelos.
Donde escribir el código
El código debe ser escrito en el archivo routes/web.php
de tu aplicación Laravel y en el método boot
de tu clase AppServiceProvider
.
Ejemplos de Código
php
use App\Models\User;
use Illuminate\Support\Facades\Route;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Route::model('user', User::class);
}
Explicación del código
En este ejemplo, estamos utilizando el método Route::model
para registrar un enlace explícito. Esto significa que cada vez que se encuentre un parámetro {user}
en la ruta, Laravel inyectará automáticamente una instancia del modelo User
correspondiente a ese parámetro.
El método Route::model
toma dos argumentos: el nombre del parámetro de la ruta (en este caso, 'user'
) y la clase del modelo que se debe utilizar (en este caso, User::class
). Esto establece una relación clara entre el parámetro de la ruta y el modelo, lo que facilita la gestión de las rutas y mejora la legibilidad del código.
php
use App\Models\User;
Route::get('/users/{user}', function (User $user) {
// ...
});
En este segundo ejemplo, definimos una ruta que contiene un parámetro {user}
. Gracias al enlace explícito que configuramos anteriormente, Laravel inyectará la instancia del modelo User
que corresponde al ID proporcionado en la URL. Por ejemplo, una solicitud a /users/1
inyectará la instancia del usuario con ID 1 desde la base de datos.
Esto significa que cuando un usuario accede a la URL www.conozcalaravel.test/users/1
, Laravel buscará en la base de datos un usuario cuyo ID sea 1. Si encuentra el usuario, lo pasará automáticamente a la función de la ruta como un objeto User
. Si no se encuentra una instancia de modelo coincidente en la base de datos, Laravel generará automáticamente una respuesta HTTP 404, lo que indica que el recurso no fue encontrado.
Visualización Gráfica en Pantalla
Cuando se utiliza el enlace explícito, la URL podría verse así: www.conozcalaravel.test/users/1
. Esto devolvería el usuario con ID 1.
En la pantalla de Chrome, el resultado podría mostrarse como:
Email: johndoe@example.com
Conclusión
En resumen, el enlace explícito en Laravel te permite tener un control más preciso sobre cómo se manejan los parámetros de la ruta. Al utilizar Route::model
, puedes definir claramente qué modelo se debe inyectar para un parámetro específico, lo que facilita la gestión de las rutas y mejora la legibilidad del código.
Para más información, visita la página oficial de Laravel y el curso de enrutamiento de Conozca Laravel.
Etiqueta:rutas