Problema al generar URLs con parámetros en Laravel

Publicado por Lynn
hace 5 meses

¡Hola a todos! Estoy teniendo un problema al generar URLs con parámetros en Laravel y necesito su ayuda para resolverlo.

Estoy tratando de generar una URL con parámetros utilizando la función url() en Laravel, pero los parámetros no se están incluyendo en la URL generada. Aquí está el código que estoy utilizando:

$url = url('producto/{id}', ['id' => 1]);

Esperaría que esto generara la URL http://mi-sitio/producto/1, pero en su lugar estoy obteniendo la URL http://mi-sitio/producto/%7Bid%7D.

He intentado también utilizar la función route() en lugar de url(), pero obtengo el mismo resultado.

¿Alguien puede ayudarme a identificar qué estoy haciendo mal? ¡Gracias de antemano!

laravel url
Respuesta de Gordon Shumway
hace 5 meses

¡Qué onda, Lynn! Parece que estás tratando de usar un placeholder en la función url() directamente, pero esa no es la forma de usarla. La función url() de Laravel espera una ruta completa, sin placeholders. Los placeholders como {id} son para las rutas nombradas al usar route().

Si tienes una ruta nombrada en tu archivo web.php o api.php que se ve más o menos así:

Route::get('/producto/{id}', [ProductoController::class, 'show'])->name('producto.show');

Entonces, puedes generar la URL utilizando la función route() de esta forma:

$url = route('producto.show', ['id' => 1]);

Esto debería darte la URL esperada: http://mi-sitio/producto/1

Si en cambio no estás trabajando con rutas nombradas y solo quieres construir la URL directamente, entonces debes hacerlo sin placeholders, de la siguiente manera:

$url = url('producto/1');

En este último caso, estás pasando el parámetro directamente en la URL, lo que es más manual, pero igualmente válido.

¡Espero que eso solucione tu problema! Dale una revisada y me cuentas cómo te va.