2012-07-17 85 views
1

是否可以定義Symfony2路由規則中使用的語言環境數組,以便我不必在每條路徑中反覆重複並分別爲每條路徑改變它如果我更改支持的語言列表?Symfony2 i18n路由 - 定義一個需求數組

我知道這是很容易做到快速搜索&替換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 

languages是一個數組,無論是外部提供的YAML數組還是PHP數組;這不是真的很重要。

這可能對我進一步簡化應用程序的配置非常有幫助。我想提取儘可能多的配置到config.yml文件中。所以,如果我決定,例如,我想快速添加一種新語言,並且我已經在業務邏輯和模板層中支持它,我只需修改config.yml中的語言數組,然後完成。

+0

你解決了嗎? – vibaiher 2012-10-22 12:19:34

+0

@vibaiher沒有。仍在尋找解決方案。 – XanatosLightfiren 2012-12-23 13:01:33

回答

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