Создание URL-адресов, содержащих локаль в Symfony 4
Я создаю веб-приложение Symfony 4, которое поддерживает несколько языков. Маршрутизация сделана, поэтому я могу иметь /en/suchpage
или же /de/suchpage
, Я сейчас ищу способ ссылки на "такую страницу", используя правильный язык.
Маршрутизация выглядит следующим образом:
suchpage:
path: /{_locale}/suchpage/
controller: App\Controller\SimplePageController::such
requirements:
maw: '%app.locales%'
defaults:
_locale: '%locale%'
Я использую Twig, и именно из шаблонов Twig мне нужно иметь возможность ссылаться на нужную версию страницы. Это работает":
{{ path('suchpage', {'_locale': app.request.locale}) }}
У него есть две проблемы:
Я не хочу повторять это повсюду. Что-то вроде
{{ page('suchpage') }}
было бы намного лучше. Существует ли такая функция? Можноpath()
заставить себя вести себя так?Это завершится неудачно, если в запросе не указан языковой стандарт, как это может произойти, поскольку он не требуется на всех страницах (поскольку некоторые имеют значение по умолчанию).
1 ответ
Существует обслуживаемый пакет, JMSI18nRoutingBundle, для достижения того, что вам нужно.
composer require jms/i18n-routing-bundle
Некоторые полезные ссылки об этом комплекте:
Packagist: https://packagist.org/packages/jms/i18n-routing-bundle