Multiple routes with the same anonymous callback using Slim Framework
Asked Answered
S

3

12

How can I define multiple routes that use the same anonymous callback?

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

I know I can use a reference to a function which would work, but I'd prefer a solution for using the anonymous function to be consistent with the rest of the codebase.

So basically, what I'm looking for is a way of doing something like this:

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

~ OR ~

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

Thank you.

Searle answered 17/7, 2012 at 11:9 Comment(0)
I
20

You can use conditions to achieve just that. We use that to translate URLs.

$app->get('/:route',function()
{
    //Do same stuff for both routes
})->conditions(array("route" => "(first_route|second_route)"));
Irtysh answered 2/4, 2013 at 18:54 Comment(0)
R
14

I can't give you a framework specific solution, but if it helps you can reference anonymous function:

$app->get('/first_route', $ref = function()
{
   //Do stuff
});
$app->get('/second_route', $ref);
Retaretable answered 17/7, 2012 at 11:19 Comment(1)
That's very clever, thanks. I'll wait to see if there's a framework specific solution.Searle
A
4

Callbacks are delegates. So you can do something like that :

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

function myCallBack() {
    //Do stuff
}
Apricot answered 18/4, 2014 at 9:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.