2012-01-16 16 views
3

symfony2インストールでurl経由でページ言語を定義したいと思います。私のルーティングは、コントローラ内の注釈を介して動作します。ルーティングのロケール、パラメータなしのデフォルト言語

のrouting.yml

_index: 
    resource: "@MyMainBundle/Controller/SiteController.php" 
    type:  annotation 

siteController.php

/** 
* @Route("/{_locale}/{site}", name="_site_site", defaults={"_locale" = "en"}, requirements={"site" = "about|cities|download|blog", "_locale" = "en|de|fr|es"}) 
*/ 

これはよく静かに動作しますが、私が欲しいWAHT、以下のURLは同じアクションを呼び出すことです。

http://example.com/download 
http://example.com/en/download 
http://example.com/de/download 

languge-parameterが指定されていない場合、ページはデフォルトの言語に戻されますが、これは私の動作の中で処理できるものです。

この回答が見つかりましたが、まったく動作しませんでした。 Symfony2 default locale in routing

答えて

7

ロケールを含まない別の@Routeアノテーションを追加するだけです。

/** 
* @Route("/{_locale}/{site}/") 
* @Route("/{site}/") 
*/ 
+2

ありがとうございます!私は 'defaults = {"_ locale" = "en"}'を追加しなければなりませんでした。それ以外の場合、URLにロケールが見つからない場合はエラーになります。 – madc

+0

type = "annotation"の後にrouting.ymlにロケールを追加できます。 _locale:en | fr –

関連する問題