2012-01-16 5 views
3

Я хочу определить язык страницы через url на установке Symfony2. Моя маршрутизация работает через аннотацию внутри контроллера.Язык в маршрутизации, язык по умолчанию также без параметра

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-параметра, страница должна переключиться обратно на язык по умолчанию, но это то, что я могу справиться в моей деятельности.

Я нашел этот ответ, но не смог заставить его работать вообще. Symfony2 default locale in routing

ответ

7

Просто добавьте еще @Route аннотация, которая не включает местонахождение.

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

Спасибо! Мне просто нужно было добавить 'defaults = {"_ locale" = "en"}', в противном случае это приведет к ошибке, если в URL-адресе не обнаружено языкового стандарта. – madc

+0

вы можете добавить locale в routing.yml после типа = "аннотации": _locale: en | fr –

Смежные вопросы