2016-06-10 64 views
0

我試圖用{_locale}定義我的網站的路徑作爲前綴所以會有類似的路線:語言環境作爲前綴,全球對整個網站

  • mysite.com/about-us
  • mysite.com/es/about-us
  • mysite.com/en/about-us

我的第一個問題是確定{_locale}前綴使它強制性和路線mysite.com/about-us將無法工作。目前這種方式定義:

#Acme/WebBundle/Resources/config/routing.yml 
app_about_us: 
    path: /{_locale}/about-us 
    defaults: { _controller: AcmeWebBundle:Static:aboutUs, _locale: es} 
    requirements: 
    _locale: es|en 

#app/config/routing.yml 
Acme_web: 
    resource: "@AcmeWebBundle/Resources/config/routing.yml" 
    prefix: /

另外,我不希望我的路線顯示{_locale},所以如果有人類型:

  • mysite.com/es/about-us它改變* mysite.com

最後,如果有任何方法來爲全部站點設置全局的前綴,而不是將它放在每條路線上,那就太棒了。

回答

0

OK,首先你可以設置default locale爲整個應用程序

# app/config/config.yml 
framework: 
    default_locale: en 

二 - 這樣做,你可以聲明兩種途徑:

app_about_us: 
    path: /{_locale}/about-us 
    defaults: { _controller: AcmeWebBundle:Static:aboutUs} 
    requirements: 
    _locale: es|en 

app_about_us_locale: 
    path: /about-us 
    defaults: { _controller: AcmeWebBundle:Static:aboutUs, _locale: es} 

林不知道有沒有可能做不同的方式沒有額外的捆綁,事件等...

其他方式

您可以設置會話區域設置 - here is example to make locale sticky。 通過這種方式,您可以創建正常路由,無需參數。那麼如何設置新的會話區域設置?創建特殊路由來設置新的區域並重定向到您的原始頁面。

app_set_locale: 
    path: /{_locale}/ 
    defaults: { _controller: AcmeWebBundle:Locale:setLocale} 
  • 內部控制器設置locale重定向一頁

閱讀有關路由,區域設置的Symfony文檔翻譯 - 也許你會發現一些有趣的事情:)

相關問題