我正在尝试从路由条件(documentation)中的表达式访问app范围的symfony参数(在app / config / parameters.yml中定义)。
我试着在百分号内插入参数,并通过函数“参数”(如DI here所述),但都无济于事。
以下是参数函数的示例:
example_route:
path: /example/{_locale}
condition: "request.getLocale() in parameter('locales_array')"
defaults:
_controller: "AcmeExampleBundle:Example:index"
_locale: %locales_default%
但是我得到了:
SyntaxError - 位置24周围不存在“参数”功能。
有没有办法从路由条件表达式访问参数?
答案 0 :(得分:3)
我在https://github.com/symfony/symfony/pull/12869开了一个公关版本的2.7版本,直到它完成并发货,如果您需要在项目中添加UrlMatcher,则必须使用自己的扩展版本容器函数提供程序,并在"变量"中注入一个容器。 ExpressionLanguage#evaluate的参数,以便您能够访问参数和服务。
你可以看一下PR以获得如何做的提示,如果你以后需要,我会更详细地写一下。
答案 1 :(得分:1)
你很幸运(我有点迟了),我只是使用语法%variable%从表达式访问Symfony参数。
以下是您在Symfony 3中测试的示例:
example_route:
path: /example/{_locale}
condition: "request.getLocale() in ['%locales_array%']"
defaults:
_controller: "AcmeExampleBundle:Example:index"
_locale: %locales_default%