Я пытаюсь получить доступ к параметрам Symfony всего приложения (определенных в app / config / parameters.yml) из выражения в состоянии маршрута (документация).
Я попытал счастья, вставив параметр в знак процента и через функцию «параметр» (как описано для DI Вот) оба безрезультатно.
Вот пример с функцией параметра:
example_route:
path: /example/{_locale}
condition: "request.getLocale() in parameter('locales_array')"defaults:
_controller: "AcmeExampleBundle:Example:index"_locale: %locales_default%
Однако я получаю:
Ошибка синтаксиса — Функция «параметр» не существует вокруг позиции 24.
Есть ли способ получить доступ к параметрам из выражений условия маршрутизации?
Я открыл пиар в https://github.com/symfony/symfony/pull/12869 для версии 2.7, пока она не будет сделана и доставлена, вам придется использовать собственную расширенную версию, если UrlMatcher в вашем проекте, в который вам нужно будет добавить поставщика функций контейнера, а также внедрить контейнер в аргументе «переменных» ExpressionLanguage # define так, чтобы Вы сможете получить доступ к параметрам и услугам.
Вы можете посмотреть на PR, чтобы получить подсказку, как это сделать, я напишу об этом более подробно, если понадобится позже.
Вам повезло (и я немного опоздал), я обращаюсь к параметрам Symfony из выражения, просто используя синтаксис% variable%.
Вот ваш пример, протестированный в Symfony 3:
example_route:
path: /example/{_locale}
condition: "request.getLocale() in ['%locales_array%']"defaults:
_controller: "AcmeExampleBundle:Example:index"_locale: %locales_default%