我一直在网上查找,找不到任何能告诉你如何为一个回调分配多条路线的东西。例如,我想搬家:
$app->get('/sign-in', function($request, $response) {
return $this->view->render($response, 'home.twig');
});
$app->get('/login', function($request, $response) {
return $this->view->render($response, 'home.twig');
});
成像:
$app->get(['/sign-in', '/login'], function($request, $response) {
return $this->view->render($response, 'home.twig');
});
有没有办法用Slim 3做到这一点?我在网上发现,在Slim 2中你可以使用最后的conditions([]);
函数将多条路由链接到一个回调。
答案 0 :(得分:3)
看起来你可以简单地定义一个数组并循环遍历它,在一个函数上创建多个路由。
$routes = [
'/',
'/home',
'/sign-in',
'/login',
'/register',
'/sign-up',
'/contact'
];
foreach ($routes as $route) {
$app->get($route, function($request, $response) {
return $this->view->render($response, 'home.twig');
});
}
答案 1 :(得分:2)
只需将函数创建为闭包并将其作为参数传递:
__init__
或使用命名函数:
$home = function($request, $response) {
return $this->view->render($response, 'home.twig');
};
$app->get('/sign-in', $home);
$app->get('/login', $home);
答案 2 :(得分:1)
FastRoute没有达到您想要的效果,但是,您可以将通过正则表达式限制的参数用于您要使用的网址列表:
$app->get("/{_:sign-in|login}", function ($request, $response) {
$response->write("Hello!");
return $response;
});
请注意,您必须拥有参数名称,因此我使用_
,因为它无用。
答案 3 :(得分:0)
我正在使用正则表达式来做这个技巧:
$app->get('/{router:login|sign-in}', function ($request, $response, $args) {
echo "Hello, " . $args['router'];
});