Я хотел бы настроить несколько URL-адресов для одного действия в контроллере (для целей интернационализации).Как использовать несколько маршрутов для одного контроллераAction с Symfony3
Согласно этому answer это было, конечно, возможно в Symfony2 для:
- Сделать двойной маршрут аннотаций.
- Используйте сторонний комплект (например, «BeSimple's»).
Но я с помощью Symfony 3.0.3, который запрещает мне делать это, пока я не изменить название маршрута (пример):
/**
* @Route("/welcome", name="welcome", defaults={"_locale" = "en"})
* @Route("/bienvenue", name="welcomeFR", defaults={"_locale" = "fr"})
* @Route("/willkommen", name="welcomeDE", defaults={"_locale" = "de"})
*/
Но добавив дополнительные «FR/DE» гольцов в маршруты меняют свое присутствие и руины мой URL генерации логики в шаблоне, я вынужден сделать на всех звеньях:
{# homepage example #}
{% if _locale = 'en' %}
{{ path('welcome') }} {# Routes from set only for "en" #}
{% elseif _locale = 'fr' %}
{{ path('welcomeFR') }} {# "fr" only links #}
{% endif %} {# and so on #}
Кто-нибудь нашел правильное решение этой проблемы?
Это сложное и довольно приятное решение, спасибо. Но, к сожалению, он не признает, что другие маршруты также должны быть локализованы (например, маршрут «welcomeAnotherName» не будет определять {«_locale» = «fr»} на всех остальных маршрутах. – Xarvalus
Я изучаю «Компонент маршрутизации», и «Custom Route Loader», может быть, я найду там простое решение для определения набора ссылок с помощью «_locale». – Xarvalus
Я добавил и обновил свой ответ. – Muriano