从Symfony中的路由条件表达式访问全局参数

时间:2014-10-28 11:10:52

标签: php symfony symfony-2.4 symfony-routing

我正在尝试从路由条件(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周围不存在“参数”功能。


有没有办法从路由条件表达式访问参数?

2 个答案:

答案 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%