如何在Silex中为一个请求定义多个路由?

ari*_*lcr 7 php symfony silex

在Silex中是否有一种方法可以为一个请求定义多个路由.我需要能够为一个页面定义两个路由(两个路由都占用同一页面).这是我当前的控制器:

$app->get('/digital-agency', function() use ($app) {
    return $app['twig']->render('digital_agency.html', $data);
});
Run Code Online (Sandbox Code Playgroud)

当我像这样复制函数时,它可以工作:

$app->get('/digital-agency', function() use ($app) {
    return $app['twig']->render('digital_agency.html', $data);
});

$app->get('/agencia-digital', function() use ($app) {
    return $app['twig']->render('digital_agency.html', $data);
});
Run Code Online (Sandbox Code Playgroud)

那么,有什么想法更干净的方法吗?

Mae*_*lyn 15

您可以将闭包保存到变量并将其传递给两个路径:

$digital_agency = function() use ($app) {
    return $app['twig']->render('digital_agency.html', $data);
};

$app->get('/digital-agency', $digital_agency);
$app->get('/agencia-digital', $digital_agency);
Run Code Online (Sandbox Code Playgroud)


小智 10

您还可以使用assert方法匹配某些表达式.

$app->get('/{section}', function() use ($app) {
    return $app['twig']->render('digital_agency.html', $data);
})
->assert('section', 'digital-agency|agencia-digital');
Run Code Online (Sandbox Code Playgroud)