Trabajando con parámetros de ruta en Laravel

Hoy vamos a hablar un poco sobre los parámetros que se pueden pasar en la URL cuando usamos el framework Laravel y sobre la importancia del nombre de la variable que los mismos deben tener.

Recuerda que cuando usas un resource de Laravel, el framework asigna un nombre dependiendo del modelo; y varias veces no es el que esperamos.

Por otro lado debemos cuidar el nombre de la variable cuando recibimos el parámetro en un controlador.

Veamos cómo funcionan los parámetros de ruta en Laravel al usar resources y controladores, además de un truco para saber el nombre de los parámetros de las rutas de Laravel.

Recibir parámetro: nombre de variable

Primero veamos qué nombre debe tener nuestro parámetro. Este nombre es muy importante y debe coincidir con el resource.. Por ejemplo yo tengo mi método destroy:

<?php
public function destroy(User $user)
{
    $user->deleteOrFail();
    return redirect()->back()->with("mensaje", "Usuario eliminado");
}

Fíjate en que recibo el parámetro de tipo User, pero la variable en este caso no tendrá al usuario que espero, ya que al definirlo en mi resource no le puse ese nombre, así que debo recibirlo como usuario, literalmente así:

<?php
public function destroy(User $usuario)
{
    $usuario->deleteOrFail();
    return redirect()->back()->with("mensaje", "Usuario eliminado");
}

Ahora el parámetro se llama usuario, y esto es porque al definir mi resource lo hice con “usuarios”, y el parámetro es la versión singularizada de esa cadena.

<?php
Route::resource("usuarios", UserController::class)->except(["store"]);

Listar parámetros de URL en Laravel

En este caso para “usuarios” es fácil saber el nombre del parámetro (y variable) en singular, pero para cuando son otras cosas como “publicaciones_foros” o cosas complejas puede que no sepamos el nombre del parámetro ya que el algoritmo de Laravel lo puede entender de manera distinta.

Por ello es que un truco que podemos aplicar es listar las rutas con: php artisan route:list

Que nos dará una salida como la siguiente:


  GET|HEAD        / ......................................................................................................................................................... 
  GET|HEAD        foros/create ......................................................................................................... foros.create › ForoController@create
  GET|HEAD        notificaciones/{notificacione}/edit ..................................................................... notificaciones.edit › NotificacionController@edit
  GET|HEAD        productos ...................................................................................................... productos.index › ProductoController@index
  DELETE          publicaciones_foros/{publicaciones_foro} ................................................ publicaciones_foros.destroy › PublicacionDeForoController@destroy
  GET|HEAD        publicaciones_foros/{publicaciones_foro}/edit ................................................. publicaciones_foros.edit › PublicacionDeForoController@edit

Y aquí podemos ver que en el caso de publicaciones_foros el parámetro se llama publicaciones_foro (aunque un humano lo llamaría publicacion_foro, pero el algoritmo no).

Así es como podemos averiguar el nombre de los parámetros con Laravel.

Igualmente podemos indicar la versión singularizada de nuestro resource al momento de definirlo, pero en caso de que tengas prisa o quieras dejar todo como está puedes hacer lo de este post.

Por aquí te dejo más tutoriales de PHP y Laravel.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *