2014-01-11 48 views
2

我正在使用Symfony 2.4及其表達式語言組件。在我的一個服務定義中,我想用type="expression"的參數。如何在Symfony表達式語言中連接字符串,參數和函數返回結果

  1. service('kernel').getCacheDir()函數結果
  2. "/"只是一個斜線
  3. %router.cache_class_prefix%的參數
  4. %corebundle.route_provider.cache.class%的參數

我:這怎麼可能使用表達式語言連接以下四個組件希望我清楚自己想實現的目標。下面你看到services.xml文件的一部分,我想使用它。但是,這將引發一個錯誤:SyntaxError: Unexpected token "string" of value "/" around position 33.

<parameters> 
    <parameter key="corebundle.route_provider.cache.class">ZikulaRoutes</parameter> 
</parameters> 
<services> 
    <service id="corebundle.route_provider" class="%corebundle.route_provider.class%"> 
     <call method="setCachePath"> 
      <argument type="expression">service('kernel').getCacheDir() "/" %router.cache_class_prefix% %corebundle.route_provider.cache.class%</argument> 
     </call> 
    </service> 

回答

4

在表達式語言級聯運算符是波浪字符~。此表達式的正確語法是:

service('kernel').getCacheDir() ~ '/' ~ parameter('router.cache_class_prefix') ~ parameter('corebundle.route_provider.cache.class') 
+2

它是否適用於'parameters.yml'配置文件? – Wirone

相關問題