Два месяца назад я спросил, как реализовать маршрутизацию с языковым параметром в uri здесь: Язык в Routing, Язык по умолчанию также без параметра
Но теперь, чтобы избежать двойного контента, я хочу иметь язык по умолчанию (en) без и другие языки с параметром. Другими словами, мне нужно определить префикс маршрута в соответствии с параметром _locale.
Пример
http://example.com/
http://example.com/de/
http://example.com/about/
http://example.com/de/about/
...
Вот мои настройки тестирования, которые показывают мне ошибку, показанную ниже:
routing.yml:
_site_en:
resource: "@MyMainBundle/Controller/SiteController.php"
type: annotation
requirements: { _locale : en }
prefix: /
_site:
resource: "@MyMainBundle/Controller/SiteController.php"
type: annotation
requirements: { _locale : fr|es|it|de }
prefix: /{_locale}/
Аннотации контроллера
/**
* @Route( "/", name="_site_startpage", defaults={"_locale" = "", "slug"="startpage"} )
* @Route("/{slug}/", name="_site_site", defaults={"_locale"=""})
*
* @ParamConverter("page", class="MyMainBundle:Page")
*/
public function siteAction( $slug, $_locale, Page $page )
Как это сделать правильно?
Edit:
В результате я получаю исключение, что маршрут к пути не определен.
No route found for "GET /"
404 Not Found - NotFoundHttpException
1 linked Exception:
ResourceNotFoundException »
router: debug показывает только 2-й маршрут:
_site_startpage ANY /{_locale}/
_site_site ANY /{_locale}/{slug}/
Редактировать 2:
Я закончил тем, что использовал JMSI18nRoutingBundle…