2012-07-17 3 views
11

Come definire più percorsi che utilizzano lo stesso callback anonimo?Più percorsi con lo stesso callback anonimo tramite Slim Framework

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

So che posso utilizzare un riferimento ad una funzione che avrebbe funzionato, ma io preferirei una soluzione per l'utilizzo della funzione anonima per essere coerente con il resto del codice di base.

Quindi, in pratica, quello che sto cercando è un modo di fare qualcosa di simile:

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

~ O ~

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

Grazie.

risposta

19

È possibile utilizzare le condizioni per raggiungere questo obiettivo. Lo usiamo per tradurre gli URL.

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

È fantastico, grazie. – Francisc

14

Non posso dare una soluzione specifica quadro, ma se ti aiuta è possibile fare riferimento funzione anonima:

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

Questo è molto intelligente, grazie. Aspetterò di vedere se esiste una soluzione specifica per il framework. – Francisc

4

I callback sono delegati. Quindi puoi fare qualcosa del genere:

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

function myCallBack() { 
    //Do stuff 
}