2012-07-17 43 views
11

如何定義多個使用相同匿名回叫的路由?使用Slim Framework匿名回叫的多個路由

$app->get('/first_route',function() 
{ 
    //Do stuff 
}); 
$app->get('/second_route',function() 
{ 
    //Do same stuff 
}); 

我知道我可以使用一個參考這將工作的功能,但我更喜歡一個解決方案,使用匿名函數與代碼庫的其餘部分保持一致。

所以基本上,我正在尋找的是做這樣的事情的一種方式:

$app->get(['/first_route','/second_route'],function() 
{ 
     //Do same stuff for both routes 
}); 

〜或者〜

$app->get('/first_route',function() use($app) 
{ 
    $app->get('/second_route');//Without redirect 
}); 

謝謝。

回答

19

您可以使用條件來實現這一點。我們用它來翻譯網址。

$app->get('/:route',function() 
{ 
    //Do same stuff for both routes 
})->conditions(array("route" => "(first_route|second_route)")); 
+0

太棒了,謝謝。 – Francisc 2013-04-09 20:16:33

14

我不能給你一個框架,具體的解決方案,但如果它可以幫助你可以參考匿名函數:

$app->get('/first_route', $ref = function() 
{ 
    //Do stuff 
}); 
$app->get('/second_route', $ref); 
+0

這非常聰明,謝謝。我會等待看看是否有框架特定的解決方案。 – Francisc 2012-07-17 11:26:12

4

回調是代表。所以你可以這樣做:

$app->get('/first_route', myCallBack); 
$app->get('/second_route', myCallBack); 

function myCallBack() { 
    //Do stuff 
}