1

プロジェクトに、ロケールパラメータ{_locale}を使用してインデックスページにリダイレクトする言語セレクターがありますが、リンクがrouting.ymlで設定されたデフォルトのロケールである場合、リンクは異なって見えます。これは私のコードです:

コードでリンクを生成します:

<a href="{{ path('ProjectBaseBundle_index', {'_locale': country.idlang}) }}">
    ...
</a>

そして、これがrouting.ymlです:

ProjectBaseBundle_index:
    pattern:  /{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:index, _locale: es }
    requirements:
        _locale: en|fr|de|es

これにより、すべての言語のルートが適切に生成されます。デフォルトのルートを購入すると、外観が異なります。

http://project.dev/app_dev.php/en
http://project.dev/app_dev.php/fr
http://project.dev/app_dev.php/de
http://project.dev/app_dev.php/?_locale=es

esはデフォルトの言語コードです。私はSymfony2.1を使用しています

デフォルトの言語で同じルートを生成する方法を知っている人はいますか?

4

2 に答える 2

1

これは、要件の条件と次のパラメータが原因で発生しますUrlGenerator。引数配列を介して渡された不明なパラメータは、URLの最後にGETパラメータとして自動的に追加されます。

ルートのセクションに配置するconfig.yml 代わりに、デフォルトのロケールを配置しようとしましたか?defaults

Symfony-2.0

framework:
    session: { default_locale: es }

Symfony-2.1

framework:
    default_locale: es
于 2012-07-29T17:22:26.930 に答える
0

デフォルト言語にはパラメータ{_locale}が存在しないため、それが理にかなっていることを発見しました。そのため、システムはパラメータをGETパラメータとして追加しました。

回避策を見つけました:

ProjectBaseBundle_default:
    pattern: /{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:index , _locale: %locale% }

ProjectBaseBundle_index:
    pattern: /{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:index }
    requirements:
        _locale: en|fr|de|es

そして私はSymfonyボードで問題を開きました:https ://github.com/symfony/symfony/issues/5135

于 2012-08-01T07:41:30.560 に答える