2012-08-02 4 views
7

내 routing.yml에 모든 단일 경로에서 _locale 요구 사항을 지정했습니다.이 상황을 단순화하기위한 것이어야한다고 생각합니다. 내가 3Symfony2 global {_locale} 요구 사항

이 가능 Symfony2.1 베타를 사용하고

routing.yml

ProjectBaseBundle_index: 
    pattern: /{_locale} 
    defaults: { _controller: ProjectBaseBundle:Default:index } 
    requirements: 
     _locale: en|es 

ProjectBaseBundle_privacy: 
    pattern: /privacy/{_locale} 
    defaults: { _controller: ProjectBaseBundle:Default:privacy } 
    requirements: 
     _locale: en|es 

..... 

ProjectBaseBundle_legal: 
    pattern: /legal/{_locale} 
    defaults: { _controller: ProjectBaseBundle:Default:legal } 
    requirements: 
     _locale: en|es 

내 모든 경로에 대한 글로벌 _locale 요구 사항을 지정?

+0

Symfony의 어떤 버전을 사용하고 있습니까? – j0k

+0

symfony 2.1, 그것이 프레임 워크의 "오래된"기능이라고 생각했기 때문에 언급하지 않았습니다. – unairoldan

답변

11

(파비앙에 따라) 심포니의 2.1 버전의 베타 4를 실행해야합니다. 내 번들에는 대개 정보가 너무 많기 때문에 컨트롤러, 리소스 및 경로를 서로 다른 "모듈"로 구분했습니다. 이 접근 방식의 결과로, 나는이 발견 :

주인이 라우팅 설정으로-default.yml 라우팅

ProjectBaseBundle_default_privacy: 
    pattern: /privacy 
    defaults: { _controller: ProjectBaseBundle:Default:privacy } 

ProjectBaseBundle_default_legal: 
    pattern: /legal 
    defaults: { _controller: ProjectBaseBundle:Default:legal } 

ProjectBaseBundle_default_usage: 
    pattern: /usage 
    defaults: { _controller: ProjectBaseBundle:Default:usage } 

ProjectBaseBundle_default: 
    resource: "@ProjectBaseBundle/Resources/config/routing-default.yml" 
    prefix: /{_locale}/project/ 
    requirements: 
     _locale: en|es|de|fr 

아이 routing.yml, 나는 최소화 로케일 요구 사항을 작성해야하는 장소

+1

멋진 솔루션입니다. 감사. –

+1

이것은 매우 유용합니다. 그러나 나는 방황한다. 내가 로케일 중 하나가 기본값 ('es'라고 말하고 싶다.) 때문에/project/privacy (암시 적으로 'en'로케일을 가리킴)와 같은 경로를 가질 수 있도록하려면/{_ locale} /을 명시 적으로 사용해야합니다. .. 다른 지역의 경로. routing.yml에서 'master'라고 말할 수있는 방법이 있습니까? 나는 기본 _locale로 시도했지만 ... wishfull 생각으로 바뀌었다. 안부 – javigzz

+0

나는 그것을하는 방법을 찾지 못했습니다./_locale/매개 변수를 사용하여 하나의 경로를 가져온 후에는이를 사용해야합니다. – unairoldan

0

이 논의를 살펴 보자

https://groups.google.com/forum/#!topic/symfony-devs/6oxsa7whBps

당신이 필요로하는 것과 비슷한 뭔가를 할 수 있다는 것을의 {_locale} 매개 변수의 시작 부분에 지정된 경우에만 있음 경로가 아니라 끝.

라우팅 설정을 가져올 "마스터"라우팅을 사용 : 또한 당신은 내가 그렇게 할 수있는 방법을 발견했다

+0

2011 년 6 월 12 일자로이 토론을 보았습니다. – unairoldan