如何在Symfony表达式语言中连接字符串,参数和函数返回结果

Chr*_*ian 2 php symfony

我正在使用Symfony 2.4和它的表达式语言组件.在我的一个服务定义中,我想使用一个参数type="expression".如何使用表达式语言连接以下四个组件:

  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>
Run Code Online (Sandbox Code Playgroud)

小智 5

表达式语言中的连接运算符是波浪号~.此表达式的正确语法是:

service('kernel').getCacheDir() ~ '/' ~ parameter('router.cache_class_prefix') ~ parameter('corebundle.route_provider.cache.class')
Run Code Online (Sandbox Code Playgroud)

  • 它对`parameters.yml`配置文件有用吗? (2认同)