2016-11-03 7 views
1

http://example.com/company/d9c363ae-a1b7-11e6-a66d-9e9923e30d94/http://example.com/company/custom-domain.comの両方を使用して到達可能なエンティティがあります。symfonyルーティング:UUIDからカスタムスラッグにリダイレクトする方法

今や、Companyにはスラグがあるかもしれませんが、スラグを持つことはできません。

ドメインセットがあるかどうかを確認したいのですが、そのURLがUUIDに基づいている場合は、それをスラッグ付きのバージョンにリダイレクトしたいと思います。ドメインが設定されていない場合は、単にUUIDを使用してページを表示します。

私はthis Symfony's tutorial以下、これをやった:

# routing.yml 

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

そして、私のコントローラで私はこの方法を記述します:

/** 
* 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%確実ではないです。試してみることができますか?

関連する問題