我正在使用 Assetic 来包含我的脚本,并且需要传递当前的语言环境。我该怎么做?
{% javascripts
'@MyBundle/Resources/public/components/moment/moment.js'
'@MyBundle/Resources/public/components/moment/lang/' ~ app.request.locale ~ '.js'
%}
字符串连接不起作用并抛出值“~”的意外令牌“运算符”
您可以使用Ryan Weaver 在此处的回答中描述的资产变量。该功能有点损坏,但在您使用语言环境作为变量时适用于您的情况。
答案是默认情况下只有两个变量有效(locale 和 env,它们的值在 Symfony 中预先配置: https ://github.com/symfony/AsseticBundle/blob/master/DefaultValueSupplier.php#L31 。
config_dev.yml
assetic:
use_controller: false
配置.yml
您还需要将您的assetic.variables.locale [...] 设置为您的变量的所有可能组合:
assetic:
variables:
locale: [en,fr,de]
...然后在调用assetic:dump
.
模板
{% javascripts
'bundles/my/components/{locale}.js'
%}
变通建设:
{%set myScript = '@MyBundle/Resources/public/components/moment/lang/' ~ app.request.locale ~ '.js' %}
<script src="{{ asset(myScript) }}"></script>