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

Php 从Symfony中的路由条件表达式访问全局参数,php,symfony,symfony-2.4,symfony-routing,Php,Symfony,Symfony 2.4,Symfony Routing,我试图从路由条件()中的表达式访问应用程序范围的symfony参数(在app/config/parameters.yml中定义) 我试着在百分号内插入参数,并通过函数“parameter”(如DI所述)插入参数,但均无效 以下是参数函数的示例: example_route: path: /example/{_locale} condition: "request.getLocale() in parameter('locales_array')" defaults

我试图从路由条件()中的表达式访问应用程序范围的symfony参数(在app/config/parameters.yml中定义)

我试着在百分号内插入参数,并通过函数“parameter”(如DI所述)插入参数,但均无效

以下是参数函数的示例:

example_route:
    path:     /example/{_locale}
    condition: "request.getLocale() in parameter('locales_array')"
    defaults: 
        _controller: "AcmeExampleBundle:Example:index"
        _locale: %locales_default%

然而,我得到了:

语法错误-位置24附近不存在函数“parameter”


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

我在2.7版本上打开了一个PR,在它完成并发布之前,如果您的项目中需要添加容器函数提供程序并在“变量”中插入容器,则您必须使用自己的扩展版本ExpressionLanguage的参数#求值,以便能够访问参数和服务

您可以查看PR以获得如何操作的提示,如果您以后需要,我将详细介绍它。

您很幸运(我晚了一点),我只是使用语法%variable%从表达式访问Symfony参数

以下是您在Symfony 3中测试的示例:

example_route:
    path:     /example/{_locale}
    condition: "request.getLocale() in ['%locales_array%']"
    defaults: 
        _controller: "AcmeExampleBundle:Example:index"
        _locale: %locales_default%

我认为
参数
表达式语言函数仅在容器生命周期表达式中可用。您可能需要自己注册函数。@YannEugoné我希望有一种方法不需要自己注册
参数
函数。IMHO访问全局参数应该被视为标准行为…我完全同意你的看法。但是ExpressionLanguage不是一个旧组件(>=2.4),所以您可能需要一些未实现的功能。。。在快速查看文档(再次)之后,我在任何示例中都没有看到您的用例。Symfony中我唯一看到
参数
功能的部分是DIC,所以。。。