2012-07-29 84 views
1

我在我的項目中有一個語言選擇器重定向到與區域設置參數{_locale}的索引頁,但是當鏈接是默認語言環境seted在routing.yml中,鏈接看起來不同。這是我的代碼:鏈接索引與默認{_locale}參數

我生成代碼的鏈接:

<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 

這產生propertly所有語言的路線,買了默認一個看起來不一樣:

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爲ou r默認的語言代碼。我正在使用Symfony 2.1

任何人都知道如何爲默認lang生成相同的路由?

回答

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

1

這是因爲要求的條件和UrlGenerator中提供的參數而發生的 - 通過參數數組傳遞的未知參數會自動附加在URL的末尾作爲GET參數。

你嘗試把默認的語言環境中config.yml,而不是有它的路線defaults部分?

Symfony的-2.0

framework: 
    session: { default_locale: es } 

Symfony的-2.1

framework: 
    default_locale: es 
+0

是的,我把它定義。爲什麼其他語言能正常工作?這是一樣的情況。如果我在routing.yml中使用其他語言作爲默認語言,則會發生其他語言 – unairoldan 2012-07-29 18:33:22

+0

@ Ztere0您使用的是哪個版本的Syfmony? 2.0還是2.1? – 2012-07-29 19:55:41

+0

Symfony 2.1,對不起,我在帖子中沒有提到 – unairoldan 2012-07-29 20:53:49