2016-11-08 175 views
1

我可以在xml文件中使用表达式语言(EL),只需指出参数是表达式的类型即可。Yaml和表达式语言

但是,我不能在yml文件中指出这种类型。根据这篇文章:

https://knpuniversity.com/blog/service-expressions

理论上我应该能够轻松访问表达式语言,像这样:

arguments: 
     - "@=service('doctrine').getRepository('AppBundle:User')" 

我猜想EL应在执行前的配置被读取,验证并传递到最终的对象。但事实并非如此:EL表达式在yml文件中显然从未被EL评估过,就像上面的那样。

我应该怎么做才能在yml文件中使用EL?难道是我自己编写了配置验证(请参阅:捆绑的语义配置),我是否应该添加一个期望不仅仅是一个标量值,还有一个表达式?

当倾倒从这个配置中获得价值,我看到的文字值的字符串,用例如以上是:@=service('doctrine').getRepository('AppBundle:User')

+0

我遇到了同样的问题。仍然没有找到答案。 – Aistis

回答

0

此功能适用于yml文件,以及应该制定出的框。

请参见:http://symfony.com/doc/current/service_container/expression_language.html

也许检查Symfony的版本...

+0

它是2.7/2.8。 – forsberg

+0

然后它应该工作http://symfony.com/doc/2.7/service_container/expression_language.html – martin

+0

它适用于xml文件,正如我所提到的。但是,无论我在yml配置文件中放入“@ = ....”部分,都说parameter.yml,它被视为只是一个字符串。如果我希望它是一个表达式,我必须自己手动将表达式语言注入到最终对象中,然后评估此字符串......这是我不想要的,因为我期望Symfony自动评估yml的表达式,就像xml文件一样。 – forsberg