lunes, 11 de mayo de 2020

Rutas con slug en Laravel 7

Una de las nuevas funcionalidad que trae Laravel 7 es la facilidad para enlazar los modelos a las rutas por un campo slug, o cualquier otro de nuestro modelo. La forma es bien sencilla:

//ruta para visitantes
Route::get('/post/{post:slug}', function(Post $post){
    dd($post);
});

//ruta para administradores
Route::get('/admin/post/{post}', function(Post $post){
    dd($post);
});

En el código anterior se definen dos rutas, una para visitantes de un blog y otra para los administradores. En la primera, se accederá al post mediante el campo slug del modelo con :slug; mientras que en la segunda, se enlazará al modelo mediante el campo por defecto id, es decir, sería lo mismo que indicar :id en la ruta definida para administradores.

Para versiones de Laravel anteriores a la 7, se puede modificar el comportamiento por defecto de enlazar la ruta al modelo mediante en campo id. Esto se puede hacer mediante la función getRouteKeyName(), en el articulo Rutas con slug en Laravel explico el funcionamiento.

No hay comentarios :

Publicar un comentario