es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando tener acceso a los parámetros de ruta dentro del enrutamiento de grupo

Estoy intentando tener acceso a {module} dentro de mi función, pero me devuelve el siguiente error:

Número insuficiente de argumentos para la función {closure}(), se pasó 1 en /Users/Bernard/PROJECTS/myproject/vendor/laravel/lumen-framework/src/Routing/Router.php en la línea 62 y se esperaban exactamente 2.

Aquí está mi código:

$app->router->group([
‘namespace’ => ‘App\Http\Controllers’,
], function ($router) {
$router->group([
‘namespace’ => $version,
‘prefix’ => “api/$version/{contest}/{module}”,
‘middleware’ => ‘App\Http\Middleware\COMMON\DefineContest’,
], function ($request, $module) use ($router) {
dd($module);
require DIR . “/../routes/v1/{module}.routes.php”;
});
});

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que no estás pasando suficientes argumentos a una función de cierre, y que en realidad espera dos argumentos en lugar del que estás pasando.

    Según el código que has proporcionado, parece que la función de cierre en cuestión es el segundo parámetro del grupo de enrutamiento interno, que está destinado a manejar las solicitudes para una versión específica de la API, concurso y módulo.

    La función de cierre se define como ( $request, $module ) use ( $router ), lo cual debería permitirte acceder al parámetro $module dentro de la función. Sin embargo, parece que el parámetro $request no se está utilizando en absoluto dentro de la función, por lo que podría ser la causa del problema.

    Para solucionar el error, intenta cambiar los parámetros de la función de cierre para que solo incluyan $module, de la siguiente manera:

    function ($module) use ($router) {
        dd($module);
        require __DIR__ . "/../routes/v1/{module}.routes.php";
    }
    

    Esto te permitirá acceder al parámetro $module dentro de la función, sin causar ningún error adicional de argumentos.

Comments are closed.