我最近开始使用Silex。我一直在将我的应用程序的某些功能分组到一个单独的ControllerProviderInterace中(例如将登录和注册放在一起)。
我的问题是这些ControllerProviders已安装'在子网址下,例如:
$app->mount('/account', new Controller\Account() );
我将如何别名',重写或将某些网址映射到其他网址。例如,我想要以下映射:
/login -> /account/login
答案 0 :(得分:5)
你可以这样做:
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;
$app->match('/login', function (Request $request) use ($app) {
$subRequest = $request->duplicate(null, null, null, null, null, array('REQUEST_URI' => '/account/login'));
return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
});
我实际上没有对此进行测试,因此您可能需要对其进行调整。但这就是我要采取的方法。基本上是转发控制器。
答案 1 :(得分:1)
我不知道这艘船是否航行了,但你可以直接安装在根下。例如......
$app->mount('/', new AuthenticationControllerProvider());
然后在AuthenticationControllerProvider中,您可以指定路由:
$app->get('/login', function () use ($app) {
// do login things
});
$app->get('/register', function () use ($app) {
// do register things
});
如果您希望其他路线指向那些可以设置与301重定向到这些路线的路线。
我希望这有帮助!