1

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

我的问题是这些 ControllerProviders 被“安装”在子 URL 下,例如:

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

我将如何“别名”、重写或将某些 url 映射到其他 url。例如,我想要以下映射:

/login -> /account/login
4

2 回答 2

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);
});

我还没有实际测试过,所以你可能需要调整它。但这就是我要采取的方法。基本上是一个转发控制器。

于 2012-02-02T22:56:18.287 回答
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 重定向到这些路线的路线。

我希望这有帮助!

于 2012-10-20T06:32:06.647 回答