Laravel 6

En esta lección te explicaré cómo definir rutas con parámetros dinámicos usando el framework Laravel a partir de su versión 6.

Esta lección incluye un video premium

Regístrate para ver este video y cientos de lecciones exclusivas.

Mira el código en GitHub: actual, resultado, comparación.

Vamos a definir una URL para editar las notas; lamentablemente: notas/editar no nos va a servir porque no nos permitiría saber qué nota hay que editar. Por supuesto una opción sería pasar el parámetro a través de la URL  notas/editar?id=5 y obtenerlo así:

Pero afortunadamente Laravel nos provee una manera más limpia de lograr lo anterior:

Las llaves nos permiten definir uno o más parámetros dinámicos para nuestras rutas y luego estos valores serán pasados como argumentos a la función anónima donde podremos utilizarlos.

Vamos a crear una última ruta para mostrar los detalles de una nota:

Ahora quiero que notes lo siguiente:

  • Primero: actualmente id puede contener letras y otros valores, por lo cual notas/cinco es una URL válida en nuestra APP
  • Segundo: el orden de las rutas importa bastante, la primera ruta que coincida será utilizada. Por lo que si colocamos notas/{id} ANTES de notas/crear veremos el siguiente resultado en el navegador al acceder a notas/crear: «Aquí veremos los detalles de la nota:» crear lo cual es inesperado.

Es posible restringir los valores aceptados para un parámetro de forma local usando el método where el cual acepta el nombre del parámetro y luego una expresión regular:

También es posible hacerlo de forma global (para todas las rutas) agregando lo siguiente al método boot dentro de app/Providers/RouteServiceProvider.php:

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Rutas básicas en Laravel 6