16. Cómo pasar parámetros por ruta

En este capítulo, aprenderás cómo utilizar parámetros en una ruta de Laravel 10. Los parámetros son variables que pueden pasar valores diferentes a una ruta para modificar el resultado de una solicitud. Te enseñaremos cómo definir y utilizar parámetros en tus rutas de Laravel para construir rutas dinámicas.


4 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    Los parámetros de ruta en Laravel le permiten capturar segmentos variables del URI en su ruta y utilizarlos en su controlador o devolución de llamada de ruta. Puede definir tantos parámetros de ruta como desee en su ruta.

    Por ejemplo, en la siguiente ruta, se captura el segmento {id} del URI y se utiliza como argumento en la función de devolución de llamada de la ruta:

    Route::get('/user/{id}', function (string $id) {
       return 'User '.$id;
    });


    En la siguiente ruta, se capturan los segmentos {post} y {comment} del URI y se utilizan como argumentos en la función de devolución de llamada de la ruta:

    Route::get('/posts/{post}/comments/{comment}', function (string $postId, string $commentId) {
       // ...
    });


    Tenga en cuenta que los parámetros de ruta siempre están encerrados entre llaves {} y deben constar de caracteres alfabéticos. Los guiones bajos _ también son aceptables dentro de los nombres de parámetros de ruta.

    Ocasionalmente, puede necesitar especificar un parámetro de ruta que no siempre esté presente en el URI. Puede hacerlo colocando una marca ? después del nombre del parámetro. Asegúrese de dar a la variable correspondiente de la ruta un valor predeterminado, para que no genere un error si el parámetro no está presente en la URL.

    Por ejemplo, en la siguiente ruta, {name} es un parámetro opcional. Si se encuentra en la URL, su valor se inyectará en la función de devolución de llamada de la ruta. De lo contrario, se utilizará el valor predeterminado null.

    Route::get('/user/{name?}', function (string $name = null) {
       return $name;
    });


    En la siguiente ruta, {name} también es un parámetro opcional, pero se ha proporcionado un valor predeterminado John.

    Route::get('/user/{name?}', function (string $name = 'John') {
       return $name;
    });
    • Maria Bastidas hace 1 mes

      Hola estoy comenzando el curso en youtbe  en el 3. Rutas,,, al ir en el paso de incluir  dos variable siguiendo tu curso. al ejecutarlo sale  404 Not Found, no se porque lo he hecho del comienzo todo lo anterior y lo hace bien,   Por favor si puedes ayudarme 

      lo escribí identico:

      Route::get('cursos/{$curso}/{$categoria}', function($curso, $categoria) {

           return "bienvenido al curso $curso, de la categoria $categoria";

      });

      voy al navegador coloco

      http://localhost:8081/Prueba/public/cursos/html/programa

      y me responde  404

      Not Found

      limpio los datos y los Cookies y sigue igual.. 

      Por favor ayudarme para continuar

       

    • Victor Arana Flores hace 1 mes

      Hola María ¿Por qué estás entrando a tu web de esta manera? http://localhost:8081/Prueba/public

      Te recomiendo que sigas las recomendaciones del curso para que no tengas este tipo de problemas.

    • Victor Arana Flores hace 1 mes

      si has ejecutado el comando php artisan serve este te queda un host que apunt a tu proyecto, ejemplo http://localhost::8000, si a esta url le pasas Prueba/public estas apuntando a una ruta que no existe.

      Por el contrario si estas trabajando con Xampp, este te crea un host http://localhost el cual apunta a la carpeta htdocs y ahi si tendrías que proporcionarle la ruta para llegar a tu proyecto.

      Nuevamente te recomiendo seguir las indicaciones y la forma de trabajar con la que llevo el curso para que no tengas ningun problema. 

      Saludos.

    • Carlos Astudillo hace 3 semanas

      El error esta en los parametros de la URi no debe tener $.Route::get('cursos/{$curso}/{$categoria}', function($curso, $categoria) 

      Debe quedar así:
      Route::get('cursos/{curso}/{categoria}', function($curso, $categoria) 

      Saludos.

  • Yean Martinez

    Yean Martinez hace 9 meses

    Muy buenas Tardes Victor, gusto en saludarlo, tengo una duda que no he podido resolver, ya he leído e investigado y no consigo la respuesta, mi duda es la siguiente: tengo un listado de alumnos y puedo entrar a cada uno de ellos y ver sus datos (uso un controlador para alumnos - AlumnosController) ya viendo los datas del alumno tengo un botón que me dirige a las notas del alumno y la maneja el controlador NotasController, el inconveniente viene que si quiero usar los datos del alumno en mención en las vistas de Notas no me trae estos datos; en la vista show de alumnos envío el parámetro por el enlace a la ruta de notas → <a href="{{route('notas.index', $alumno)}}"  y en el controlador de Notas en la función index lo recibo → public function index(string $id) , pero aquí no llega ningún valor, yo muestro esta variable y aparece un array vacío … {[]}

    Como puedo pasar parámetros de un controlador a otro?? ó como debe recibir estos parámetros el controlador??

     

    Muchas Gracias por su colaboración.

    • Victor Arana Flores hace 9 meses

      Hola Yean, en el array estás indicando que recibiras un string y creo que le estás mandando otro tipo de dato.

  • Victor Roman Ortiz Abreu

    Victor Roman Ortiz Abreu hace 1 año

    Ok, muy valido es un principio de programacion secuencial, aplicado a condicionales simples y multi condicionales, ya tenia mucho tiempo que no veia nada de esto gracias.

    • Daniel hace 3 meses

      .

  • Alex Labanino

    Alex Labanino hace 1 año

    Hum, intersante! Sino pongo la categoria no me muestra “Sin categoria” sino que me lleva a ‘/cursos/{curso}’, lo cual creo que es mejor! ?