2015-07-09 50 views
0

我試圖用纖細的路線組,但我有麻煩的URL參數傳遞的東西。超薄路線集團不通過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?這不是路線組的重點嗎?

回答

0

我試圖重現這一點 - 與上一次穩定版本2.6.2 - 並得到(可能)像你一樣的問題。

警告:缺少參數1 {關閉}()

路線PARAMS組可以被放置在他們的孩子的回調:

$app->group('/contest/:id', function() use ($API){ 

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

但是,是它是醜陋的授權在每條路線上,也許你可以在某種middleware中做到這一點?我認爲文檔頁面上的最後一個看起來不錯,以滿足您的需求。

編輯

哦,我最近發現this issue,其中@Gisheri已經有了一個修身維護者的答案。

+0

yah謝謝,這就是我最終做的事情..也許這將是一個功能有一天。 – Gisheri

+0

我不知道在即將到來的Slim3中的實現。 – danopz