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

时间:2014-01-11 16:45:59

标签: php symfony

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

  1. service('kernel').getCacheDir()功能结果
  2. "/"只是一个斜杠
  3. %router.cache_class_prefix%参数
  4. %corebundle.route_provider.cache.class%参数
  5. 我希望我能清楚自己想要实现的目标。下面你会看到我想要使用它的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>
    

1 个答案:

答案 0 :(得分:5)

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

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