2013-07-19 9 views
0

두 번들로 된 Symfony 2.3.1 애플리케이션이 있습니다. 각 번들은 자원/설정/routing.yml 설정 파일을 포함Symfony 2 다중 번들 주석 유형 라우팅

mobile: 
    resource: "@MyMobileBundle/Controller" 
    type:  annotation 

admin: 
    resource: "@MyAdminBundle/Controller" 
    type:  annotation 

이것은 응용 프로그램/설정/routing.yml :

_mobile: 
    resource: "@MyMobileBundle/Resources/config/routing.yml" 
    prefix: /mobile 

_admin: 
    resource: "@MyAdminBundle/Resources/config/routing.yml" 
    prefix: /admin 

그리고 응용 프로그램/설정/routing_dev.yml은 다음을 포함합니다 :

_main: 
    resource: routing.yml 

문제는 매번/admin/... 또는/mobile/... 경로 만 사용할 수 있다는 것입니다. app/config/routing.yml에 포함 된 라우팅 리소스가 하나뿐이면 제대로 작동합니다. 아무도 그런 문제가 있었나요? 이런 식으로 서로 다른 번들에 대한 접두사를 설정하는 것이 맞습니까?

+0

나는이 문제를 정말로 이해하지 못한다. 무엇을보고 싶니? –

+0

/admin 접두사가있는 경로와 MyMobileBundle의 컨트롤러가/mobile prefix가있는 경로로 MyAdminBundle에서 주석이 달린 컨트롤러에 액세스하고 싶습니다. –

+0

모두 똑같은 경로 이름을 가질 수 없으므로 경로 이름이 중복되지 않는지 확인하십시오. 'php app/console router : debug' 명령을 사용하여 모든 경로 (및 경로 이름)를 나열하고 여기 저기 조정하면 결국 문제를 알 수 있습니다. –

답변

2

php app/console router:debug 명령은 Symfony2에서 경로를 디버깅하는 가장 좋은 방법입니다.

당신이 제공 한 세부 사항에 따르면 모든 것이 정확하고 경로 접두사 중 하나를 제거하면 문제가 "고쳐집니다"라고 말하고있는 것입니다.

경로가 접두사 이름의 추가 및 경로 이름이 아니라 전적으로 경로 이름으로 정의되지 않은 Symfony2에서 배열

_mobile: # defines the prefix /mobile 
    mobile: # key that defines how you include your controller's route 
     main: /mobile/main # "main" is the route name which is duplicated below 
_admin: # defines the prefix /admin 
    admin: # key that defines how you include your controller's route 
     main: /admin/main # this route override the original "main" route 

에 경로를 시각화. 두 경로가 main 인 경우 Symfony2는 하나의 경로 만 가질 것입니다.

/admin/main/mobile/main을 (를) 덮어 써서 액세스 할 수 있습니다.

요약하면 동일한 경로 이름을 가진 두 개의 경로를 가질 수 없습니다. 두 경로가 각각 중복되지 않는 admin_main 이름과 mobile_main 한 지금

_mobile: 
    mobile: 
     mobile_main: /mobile/main 
_admin: 
    admin: 
     admin_main: /admin/main 

:

그래서 위의 예를 해결하기 위해 가장 좋은 방법은 (더 네임 스페이스 지정 등) 열쇠 경로 이름을 접두어입니다 다른.

+1

감사합니다, 토마스! –