Создание URL-адресов, содержащих локаль в Symfony 4 - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю веб-приложение 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 Ответ

0 голосов
/ 25 апреля 2018

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

composer require jms/i18n-routing-bundle

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

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

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

...