在 SlimPHP 中访问路由组中的容器

accessing a container in route group in SlimPHP

我是 SlimPHP 框架的新手。我一直试图在路由组中获取一个容器,这是显示的错误:

PHP Warning: Missing argument 2 for Slim\App::get()

这是我的路线代码:

$app->group('/api', function() use ($app) {

    $jwtMiddleware = $app->get('jwt');

    $this->post('/auth/signup', 'RegisterController:signup');
    $this->post('/auth/login', 'LoginController:login');

    //User routess
    $this->get('/user', 'UserController:getUser')->add($jwtMiddleware);
    //$this->put('/user');
});

以及我容器的代码:

// Jwt Middleware
$container['jwt'] = function ($container) {
    $jws_settings = $container->get('settings')['jwt'];
    return new \Slim\Middleware\JwtAuthentication($jws_settings);
};

请问各位,可能是什么问题?

你可以这样获取容器:

$app->group('/api', function(\Slim\App $app) {
    /* @var \Slim\App $this */
    $jwtMiddleware = $this->getContainer()->get('jwt');

    // ...
});

group 回调中 $app$this 已经是您的 Slim\App 对象。你不需要 use ($app).