Carga de recursos condicionalmente con Assetic
Pregunta
¿Es posible cargar activos condicionalmente con Assetic?
Por ejemplo (Peusocode):
load resource1.js
load resource2.js
if condition = true
load resource3.js
endif
output combined.js
Solución
No, no es posible porque los archivos Assetic se compilan en el lado del servidor, por lo que Assetic no tiene acceso al valor de su variable en tiempo de ejecución.
Una solución podría ser agregar una segunda etiqueta assética
// the first assetic tag
{% if condition %}
// an other assetic tag
{% endif %}
Otros consejos
Encontré exactamente el mismo problema. Como julesbou Ya se mencionó, es necesario agregar varias etiquetas asséticas.
Mi escenario de caso particular era representar un fondo diferente dependiendo del entorno. : gris claro para el Enchufe ambiente y blanco para el PINCHAR ambiente.
Usé dos archivos CSS: Basic.css y debug.css
Esta es mi solución (Symfony 2) (dentro de las etiquetas en una plantilla de ramita para 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 %}