2016-11-08 1444 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