Создание 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}) }}

У него есть две проблемы:

  1. Я не хочу повторять это повсюду. Что-то вроде {{ page('suchpage') }} было бы намного лучше. Существует ли такая функция? Можно path() заставить себя вести себя так?

  2. Это завершится неудачно, если в запросе не указан языковой стандарт, как это может произойти, поскольку он не требуется на всех страницах (поскольку некоторые имеют значение по умолчанию).

1 ответ

Решение

Существует обслуживаемый пакет, JMSI18nRoutingBundle, для достижения того, что вам нужно.

composer require jms/i18n-routing-bundle

Некоторые полезные ссылки об этом комплекте:

Packagist: https://packagist.org/packages/jms/i18n-routing-bundle

GitHub: https://github.com/schmittjoh/JMSI18nRoutingBundle

Другие вопросы по тегам