5

SilexアプリでURLを翻訳可能にしようとしています。

最初に、とをオーバーライドUrlGeneratorしてみ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 を拡張し、Route の代わりに match メソッドを上書きすることです。

Matcher.php

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

app.php

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

http://domain.com/adminにアクセスすると、サイレックスはhttp://domain.com/のコンテンツを返します。これがあなたが必要とするものであることを願っています。

于 2012-10-19T08:36:14.420 に答える