2016-11-03 1 views
1

http://example.com/company/d9c363ae-a1b7-11e6-a66d-9e9923e30d94/http://example.com/company/custom-domain.com을 사용하여 연결할 수있는 엔티티가 있습니다.Symfony 라우팅 : UUID에서 맞춤 slug로 리디렉션하는 방법

이제 Company에는 슬러그가있을 수 있지만 슬러그는 가질 수 없습니다.

도메인 집합이 있는지 확인하고 URL이 UUID를 기반으로하는 경우 슬러그가있는 버전으로 리디렉션하고 싶습니다. 도메인이 설정되지 않은 경우 UUID를 사용하여 페이지를 표시하기 만하면됩니다.

# routing.yml 

redirect_company_to_domain: 
    path: /company/{domain_host_or_id} 
    defaults: { _controller: AppBundle:Company:redirectToDomain } 
    requirements: 
     url: .*/$ 
    methods: [GET] 

을 그리고 내 컨트롤러에서 나는이 방법을 쓰기가 :

나는이 this Symfony's tutorial 다음했던

/** 
* Redirect the URLs with a trailing slash to the version without it. 
* 
* @param Request $request 
* 
* @return \Symfony\Component\HttpFoundation\RedirectResponse 
*/ 
public function redirectToDomainAction(Company $company, Request $request) 
{ 
    die(dump($company)); 
} 

문제는 컨트롤러가 호출되지 것입니다.

무엇이 잘못되었거나 잘못 되었습니까? 왜 길은 그 길에서 절대로 가로 채지 않습니까?

어쩌면 내가 주석과 구성을 섞어서 routing.yml에 있었기 때문에? CompanyController의 경로는 모두 특수 효과를 사용하여 설정되기 때문에

그러나 사용 app/console debug:router 나는 제대로 경로 설정을 볼 수

redirect_company_to_domain    GET  ANY  ANY /company/{domain_host_or_id} 

는 또한, 내가 후행 슬래시를 제거를 구현했습니다으로 튜토리얼에서 설명하는 방법은 작동 확신합니다.

왜 내가이 리디렉션을 만들지 않는지 이해할 수 없습니다.

답변

0

매개 변수를 대괄호로 잘못 지정했기 때문에 생각합니다.

redirect_company_to_domain: 
    path: /company/{domain_host_or_id} 
    defaults: { _controller: AppBundle:Company:redirectToDomain } 
    requirements: 
     domain_host_or_id: .*/$ 
    methods: [GET] 

나는 그게 문제라고 생각하지만, 나는 100 % 확실하지 않다 :

당신은 대신을 시도 할 수 있습니다. 그것을 밖으로 시도하고 우리에게 알려주시겠습니까?