Php Slim路由组未将url变量传递给回调

Php Slim路由组未将url变量传递给回调,php,slim,Php,Slim,我正在尝试使用slim的路由组,但在获取url参数以传递任何内容时遇到问题 $app->group('/contest/:id', function($id) use ($API){ error_log('THIS IS THE CONTEST ID: '.$id); // id is blank... why? $API->authorize('contest', $id); $contest = new Contest($id); $app-&g

我正在尝试使用slim的路由组,但在获取url参数以传递任何内容时遇到问题

$app->group('/contest/:id', function($id) use ($API){
    error_log('THIS IS THE CONTEST ID: '.$id); // id is blank... why?
    $API->authorize('contest', $id);
    $contest = new Contest($id);

    $app->get('', function() use ($contest, $API){
        $data = $contest->getSettings();
        $API->output($data);
    });

    $app->get('/settings', function() use ($contest, $API){
        $data = $contest->getSettings();
        $API->output($data);
    });

    $app->get('/stats', function() use ($contest, $API){
        $data = $contest->getStats();
        $API->output($data);
    });

    $app->get('/fields', function() use ($contest, $API){
        $data = $contest->getFields();
        $API->output($data);
    });
});

为什么我不能在回调函数中访问$id?这难道不是路由组的要点吗?

我试图复制这一点——在上一个稳定版本2.6.2中——并且(可能)遇到了与您相同的问题

警告:{closure}()缺少参数1

组中的路由参数可以放置在来自其子对象的回调中:

$app->group('/contest/:id',function()使用($API){
$app->get(“”,函数($id)use($contest,$API){
$API->authorize('contest',$id);
$contest=新竞赛($id);
$data=$contest->getSettings();
$API->输出($data);
});
});
但是,是的,在每一条路线上授权都很难看,也许你可以用某种方式授权?我认为文档页面上的最后一个看起来很适合你的需要

编辑


哦,我最近发现,@Gisheri已经得到了一个苗条维护者的答案。

是的,谢谢,这就是我最后要做的。。也许有一天它会成为一个功能。我不知道在即将到来的Slim3中的实现。