Php 使用Silex路由别名

Php 使用Silex路由别名,php,silex,Php,Silex,我最近开始使用Silex。我一直在将应用程序的某些功能分组到一个单独的ControllerProviderInterface中(例如将登录和注册放在一起) 我的问题是这些ControllerProviders“装载”在子url下,例如: $app->mount('/account', new Controller\Account() ); 如何“别名”、重写或将某些URL映射到其他URL。例如,我想要以下映射: /login -> /account/login 你可以这样做: u

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

我的问题是这些ControllerProviders“装载”在子url下,例如:

$app->mount('/account', new Controller\Account() );
如何“别名”、重写或将某些URL映射到其他URL。例如,我想要以下映射:

/login -> /account/login

你可以这样做:

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

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

您可以这样做:

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

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

我不知道船是否在这上面航行过,但你可以直接安装在根下。例如

$app->mount('/', new AuthenticationControllerProvider());
然后在AuthenticationControllerProvider中,您可以指定路由:

$app->get('/login', function () use ($app) {
    // do login things
});

$app->get('/register', function () use ($app) {
    // do register things
});
如果您希望其他路由指向这些路由,您可以设置使用301重定向到这些路由的路由


我希望这有帮助

我不知道船是否在这条船上航行过,但你可以直接登上树根下。例如

$app->mount('/', new AuthenticationControllerProvider());
然后在AuthenticationControllerProvider中,您可以指定路由:

$app->get('/login', function () use ($app) {
    // do login things
});

$app->get('/register', function () use ($app) {
    // do register things
});
如果您希望其他路由指向这些路由,您可以设置使用301重定向到这些路由的路由


我希望这有帮助

我不确定我是否理解你的问题。你想让两个URL触发同一个控制器吗?igorw说得对,我基本上想动态地将请求转发给其他处理程序。我不确定我是否理解你的问题。你想让两个URL触发同一个控制器吗?igorw做对了,我基本上想动态地将请求转发给其他处理程序。希望有更好的方法来实现这一点,但谢谢。这确实是我所期待的,我希望有一个更好的方式来做到这一点,但谢谢。这确实是我要找的