我正在使用Assetic来包含我的脚本并需要传递当前的语言环境。我该怎么做?
{% javascripts
'@MyBundle/Resources/public/components/moment/moment.js'
'@MyBundle/Resources/public/components/moment/lang/' ~ app.request.locale ~ '.js'
%}
字符串连接不起作用并抛出值为“〜”的意外标记“operator”
答案 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>