0

Symfony2 ルーティング ルールで使用されるロケールの配列を定義することは可能ですか?サポートされている言語リストを変更した場合に、すべてのルートで何度も繰り返し、各ルートで個別に変更する必要はありませんか?

ですばやく検索して置換するrouting.ymlのは非常に簡単であることはわかっています、問題の範囲は簡単に拡張できるため、次のような質問が生じる可能性があります。このロケール配列を外部から提供することは可能ですか (つまり、データベースから読み取ることができますか)。 ?

明確にするために-ここに私が今持っているものの例があります:

page_show:
    pattern: /{_locale}/page/{slug}
    defaults: { _controller: myCompanymyBundle:Cms:pageShow }
    requirements:
        _locale: en|pl
        slug: "[^,]+"

news_archive:
    pattern: /{_locale}/news/archive
    defaults: { _controller: myCompanymyBundle:Cms:newsArchive }
    requirements:
        _locale: en|pl

そして、ここに私が欲しいものの例があります:

page_show:
    pattern: /{_locale}/page/{slug}
    defaults: { _controller: myCompanymyBundle:Cms:pageShow }
    requirements:
        _locale: languages
        slug: "[^,]+"

news_archive:
    pattern: /{_locale}/news/archive
    defaults: { _controller: myCompanymyBundle:Cms:newsArchive }
    requirements:
        _locale: languages

YAMLlanguages配列であろうと、外部から提供された PHP 配列であろうと、 は配列です。それは本当に重要ではありません。

これは、私が書いているアプリケーションの構成をさらに簡単にするのに非常に役立ちます。できるだけ多くの構成を config.yml ファイルに抽出したいと思います。たとえば、新しい言語をすぐに追加したいと決めた場合、ビジネス ロジックとテンプレート レイヤーで既にサポートしている場合は、言語配列を変更するだけでconfig.yml完了です。

4

1 に答える 1

0

それは毎回私を悩ませているものです。私が提供できる唯一のことは、要件パラメーターを app/config/parameters.yml に入れることです

# src/App/Resources/config/routing.yml
sport:
    pattern: /{_locale}/{sport}
    defaults: { _controller: App:Vote:vote }
    requirements: { _locale: %routing_locales%, sport: %routing_sports% }

# app/config/parameters.yml
parameters:
    # routing requirement regex
    routing_sports:    'hockey|football' # available sports so far
    routing_locales:   'de|fr' # available locales so far
于 2013-08-21T18:06:28.397 に答える