2012-07-29 1 views
1

locale 매개 변수가 {_locale} 인 색인 페이지로 리디렉션하기 위해 내 프로젝트에 언어 선택기가 있습니다. 그러나 링크가 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

그래서 시스템은 매개 변수를 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 

을 나는 심포니 보드에 문제를 열었습니다 : https://github.com/symfony/symfony/issues/5135

1

요구 사항 조건과 제공된 매개 변수로 인해 발생합니다. UrlGenerator - 인수 배열을 통해 전달 된 알 수없는 매개 변수는 GET 매개 변수로 URL 끝에 자동으로 추가됩니다.

config.yml 대신에 로케일을 넣으려고 했습니까? defaults 경로 섹션에 있습니까?

심포니 - 2.0 :

framework: 
    session: { default_locale: es } 

심포니 - 2.1 : 난 그냥 매개 변수 {_locale가} 기본 존재하지 않기 때문에 그것이 의미가 있다는 것을 발견

framework: 
    default_locale: es 
+0

예, 나는 그것이 정의했습니다. 다른 언어가 잘 작동하는 이유는 무엇입니까? 그것은 같은 상황이다. routing.yml에서 다른 언어를 기본값으로 사용하면 다른 언어로도 발생합니다. – unairoldan

+0

@ Ztere0 어떤 버전의 Syfmony를 사용합니까? 2.0 또는 2.1? –

+0

Symfony 2.1, 죄송합니다. 게시물에 언급되지 않았습니다. – unairoldan