ump*_*sky 5 php routing translation symfony silex
我正试图在我的Silex应用程序中翻译网址.
首先,我想重写UrlGenerator和RedirectableUrlMatcher,但没有真正发挥作用.
然后,我尝试覆盖:
$app['route_class'] = 'My\Translatable\Route';
Run Code Online (Sandbox Code Playgroud)
使用这样的代码:
class Route extends Silex\Route
{
public function setPattern($pattern)
{
return parent::setPattern(str_replace('admin', 'admin2', $pattern));
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到https://gist.github.com/6c60ef4b2d8d6584eaa7.
实现这一目标的正确方法是什么?
所以解决方案是扩展 RedirectableUrlMatcher 并覆盖 match 方法而不是 Route。
匹配器.php
class Matcher extends Silex\RedirectableUrlMatcher
{
public function match($pathInfo)
{
return parent::match(str_replace('/admin', '/', $pathInfo));
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序.php
$app['url_matcher'] = $app->share(function () use ($app) {
return new Matcher($app['routes'], $app['request_context']);
});
Run Code Online (Sandbox Code Playgroud)
现在,当我访问http://domain.com/admin silex 返回http://domain.com/的内容。希望这是您所需要的。