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

Я хочу определить язык страницы через 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"} )
 */

Это работает хорошо, но я хочу, чтобы следующий URL вызывал одно и то же действие.

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

Без параметра языка, страница должна переключиться обратно на язык по умолчанию, но это то, что я могу обработать в своем действии.

Я нашел этот ответ, но не смог заставить его работать вообще. Язык по умолчанию Symfony2 в маршрутизации

Ответы [ 2 ]

9 голосов
/ 16 января 2012

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

/**
 * @Route("/{_locale}/{site}/")
 * @Route("/{site}/")
 */
2 голосов
/ 18 июля 2018

Это также работает в аннотациях. Yaml

frontend_controllers:
    resource: ../../src/Controller/Frontend
    type: annotation
    prefix:
        - /
        - /{_locale}
    defaults:
        _locale: 'en'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...