Локаль в маршрутизации, язык по умолчанию без параметров - PullRequest
2 голосов
/ 25 марта 2012

Два месяца назад я спросил, как реализовать маршрутизацию с языковым параметром в 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…

1 Ответ

2 голосов
/ 28 марта 2012

В вашем routing.yml для первого типа «аннотация» указывает, что ваш контроллер должен быть подвергнут внутреннему анализу для маршрутов.Все остальное игнорируется, я думаю.Вы должны попытаться удалить тип или изменить его на yml, удалив запись ресурса и указав значение параметра _controller ... Я думаю, вам следует посмотреть, какой формат для определения маршрута yml на самом деле.

ИлиОпределите этот маршрут по умолчанию также с аннотацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...