如何在Assetics的“javascript”标签中使用Twig变量?

时间:2013-07-16 07:46:49

标签: symfony twig assetic

我正在使用Assetic来包含我的脚本并需要传递当前的语言环境。我该怎么做?

{% javascripts
    '@MyBundle/Resources/public/components/moment/moment.js'
    '@MyBundle/Resources/public/components/moment/lang/' ~ app.request.locale ~ '.js'
 %}

字符串连接不起作用并抛出值为“〜”的意外标记“operator”

2 个答案:

答案 0 :(得分:3)

您可以使用Ryan Weaver's answer here中所述的资产变量。该功能有点破碎,但在您将区域设置用作变量时将适用于您的情况。

  

答案是默认情况下只有两个变量可用(locale和env,   并且它们的值在Symfony中预先配置:   https://github.com/symfony/AsseticBundle/blob/master/DefaultValueSupplier.php#L31

<强> config_dev.yml

assetic:
    use_controller: false

<强> config.yml

  

您还需要将assetic.variables.locale [...]设置为   变量的总可能组合:

assetic:
    variables:
        locale:    [en,fr,de]

...然后在调用assetic:dump后在javaScripts标记内使用它们。

<强>模板

{% javascripts
     'bundles/my/components/{locale}.js'
%}

答案 1 :(得分:0)

解决方法构造:

{%set myScript = '@MyBundle/Resources/public/components/moment/lang/' ~ app.request.locale ~ '.js' %}

<script src="{{ asset(myScript) }}"></script>