使用Silex路由别名

时间:2012-02-02 18:16:00

标签: php silex

我最近开始使用Silex。我一直在将我的应用程序的某些功能分组到一个单独的ControllerProviderInterace中(例如将登录和注册放在一起)。

我的问题是这些ControllerProviders已安装'在子网址下,例如:

$app->mount('/account', new Controller\Account() );

我将如何别名',重写或将某些网址映射到其他网址。例如,我想要以下映射:

/login -> /account/login

2 个答案:

答案 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重定向到这些路线的路线。

我希望这有帮助!