7

私はrouting.ymlで、すべての単一ルートでパラメーター_locale要件を指定しましたが、これはこの状況を単純化するためのものであるに違いないと思います。

routing.yml

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

ProjectBaseBundle_privacy:
    pattern:  /privacy/{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:privacy }
    requirements:
        _locale: en|es

.....

ProjectBaseBundle_legal:
    pattern:  /legal/{_locale}
    defaults: { _controller: ProjectBaseBundle:Default:legal }
    requirements:
        _locale: en|es

私はSymfony2.1ベータ3を使用しています

すべてのルートにグローバル_locale要件を指定することはできますか?

4

2 に答える 2

11

私はそれを行う方法を発見しました:

「マスター」ルーティングを使用してルーティング構成をインポートします。私のバンドルには通常情報が多すぎるため、コントローラー、リソース、ルートをさまざまな「モジュール」に分けています。そのアプローチの結果として、私はこれを発見しました:

マスターrouting.yml

ProjectBaseBundle_default:
    resource: "@ProjectBaseBundle/Resources/config/routing-default.yml"
    prefix:   /{_locale}/project/
    requirements:
        _locale: en|es|de|fr

子ルーティング-default.yml

ProjectBaseBundle_default_privacy:
    pattern:  /privacy
    defaults: { _controller: ProjectBaseBundle:Default:privacy }

ProjectBaseBundle_default_legal:
    pattern:  /legal
    defaults: { _controller: ProjectBaseBundle:Default:legal }

ProjectBaseBundle_default_usage:
    pattern:  /usage
    defaults: { _controller: ProjectBaseBundle:Default:usage }

このルーティング構成を使用して、ロケール要件を記述する必要がある場所を最小限に抑えます。

于 2012-08-21T19:40:11.427 に答える
0

この議論を見てください:

https://groups.google.com/forum/#!topic/symfony-devs/6oxsa7whBps

{_locale}パラメータがルートの最後ではなく最初に指定されているだけで、必要なことと同じようなことを行うことができるようです。また、2.1バージョンのsymfonyのベータ4を実行する必要があります(Fabienによる)

于 2012-08-02T16:12:37.907 に答える