2013-07-16 4 views
4

Я использую Assetic для включения моих сценариев и вам необходимо передать текущий язык. Как мне это сделать?Как использовать переменную Twig в теге javascript Assetics?

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

Объединение строк не работает и бросает Неожиданный маркер «оператор» значения «~»

ответ

3

Вы можете использовать переменные assetic, как описано в Ryan Weaver's answer here. Эта функция является сломанной, но будет работать в вашем случае, поскольку вы используете переменную locale.

Ответ, что только две переменные работают по умолчанию (локали и окр, и их значения preconfigued в 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] 

... затем использовать их внутри JavaScripts тег после вызова assetic:dump.

шаблон

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

Спасибо! Никогда не думал, что это будет сложно. В основном это работает, но, к сожалению, у меня не существует языкового стандарта для «en» (например, мое приложение), просто для «en-GB» и «en-US». Поэтому, в конце концов, я не мог использовать это обходное решение. – acme

Смежные вопросы