Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

478
Vistas
Laravel 5 múltiples parámetros opcionales en la ruta

Tengo un problema con Laravel 5 y, para ser precisos, no puedo encontrar la solución. En C# (ASP.NET MVC) es fácil de resolver. Por ejemplo, tengo estas rutas (solo escribiré el contenido de la ruta y el encabezado de la función, por simplicidad)

 /{category}/Page{page} /Page{page} /{category}

La función se define dentro del controlador del producto. El encabezado de la función se ve así:

 public function list($page = 1, $category = null)

el problema es que cada vez que ingreso solo un argumento, no envía el valor del parámetro por el nombre que configuré en la ruta, sino que empuja los valores por el orden de los parámetros de función. Entonces, cuando abro /Página1, funciona correctamente, el valor de 1 se envía a la variable $página, pero cuando accedo a /Golf (creado en el momento), también envía el valor a la variable $página. ¿Alguna idea posible de cómo evitar esto, o realmente necesito hacer diferentes funciones para manejar estos casos?

En C#, envía correctamente el valor y mantiene el valor predeterminado para el parámetro indefinido.

Espero que tengas una respuesta para mí. Gracias de antemano y que tengas un buen día :)

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Entonces, como ha visto, los parámetros se pasan a la función en orden, no por nombre.

Para lograr lo que desea, puede acceder a estos parámetros de ruta desde su función escribiendo insinuando el objeto de solicitud de esta manera:

 class ProductController extends Controller { function list(Request $request){ # <----------- don't pass the params, just the request object $page = $request->route('page'); # <--- Then access by name $category = $request->route('category'); dd("Page: $page | Category: $category"); } }

Luego, por supuesto, configuraría las 3 rutas para que utilicen el mismo método de controlador:

 Route::get('/{category}/Page{page}', 'ProductController@list'); Route::get('/Page{page}', 'ProductController@list'); Route::get('/{category}', 'ProductController@list');

Espero que esto ayude..!

about 4 years ago · Santiago Trujillo Denunciar

0

si desea obtener los parámetros en su controlador, puede usar esto:

 public function list() { $params = $this->getRouter()->getCurrentRoute()->parameters(); }

para /aaa/Page3 , $params sería una array(category => 'aaa', page => '3')
para /Page3 , los $params serían array(page => '3')
para /aaa , los $params serían array(category => 'aaa')

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda