Загрузка ресурсов условно с Assetic
Можно ли условно загрузить активы с помощью Assetic?
Например (peusocode):
load resource1.js
load resource2.js
if condition = true
load resource3.js
endif
output combined.js
2 ответа
Решение
Нет, это невозможно, потому что сборочные файлы компилируются на стороне сервера, поэтому сборочные не имеют доступа к значению вашей переменной во время выполнения.
Решением может быть добавление второго тега сборки
// the first assetic tag
{% if condition %}
// an other assetic tag
{% endif %}
Я столкнулся с точно такой же проблемой. Как уже упоминал julesbou, необходимо добавить несколько сборочных тегов.
Мой конкретный сценарий состоял в том, чтобы визуализировать другой фон в зависимости от среды : светло-серый для среды DEV и белый для среды PROD.
Я использовал два файла CSS: basic.css и debug.css
Это мое решение (Symfony 2) (в тегах шаблона ветки для HTML5:
{# Common CSS stylesheets--------------------------------#}
{% stylesheets
'@XStitchPublicBundle/Resources/public/css/basic.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{# ----------------------------------------------------- #}
{#
Conditional CSS stylesheet. Depend on the environment
#}
{% set environment = app.environment %}
{% if environment == 'dev' %}
{# Condition: Dev environment#}
{% stylesheets
'@XStitchPublicBundle/Resources/public/css/debug.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endif %}