5

我正在尝试在我的 Silex 应用程序中使网址可翻译。

首先,我尝试覆盖UrlGeneratorand RedirectableUrlMatcher,但这并没有真正奏效。

然后,我尝试覆盖:

$app['route_class'] = 'My\Translatable\Route';

用这样的代码:

class Route extends Silex\Route
{
    public function setPattern($pattern)
    {
        return parent::setPattern(str_replace('admin', 'admin2', $pattern));
    }
}

但我得到了https://gist.github.com/6c60ef4b2d8d6584eaa7

实现这一目标的正确方法是什么?

4

1 回答 1

1

所以解决方案是扩展 RedirectableUrlMatcher 并覆盖 match 方法而不是 Route。

Matcher.php

class Matcher extends Silex\RedirectableUrlMatcher
{
    public function match($pathInfo)
    {
        return parent::match(str_replace('/admin', '/', $pathInfo));
    }
}

应用程序.php

$app['url_matcher'] = $app->share(function () use ($app) {
    return new Matcher($app['routes'], $app['request_context']);
});

现在,当我访问http://domain.com/admin时, silex 返回http://domain.com/的内容。希望这是你需要的。

于 2012-10-19T08:36:14.420 回答