Chargement de ressources conditionnellement avec Assetic
Question
est-il possible de charger des actifs conditionnels avec Assetic?
Par exemple (PEUSCODE):
load resource1.js
load resource2.js
if condition = true
load resource3.js
endif
output combined.js
La solution
Non, il n'est pas possible car les fichiers asétiques sont compilés du côté serveur, donc Assique n'a pas accès à la valeur de votre variable au moment de l'exécution.
Une solution pourrait être d'ajouter une deuxième étiquette asticuleuse
// the first assetic tag
{% if condition %}
// an other assetic tag
{% endif %}
Autres conseils
Je suis tombé sur le même problème.Comme Julesbou déjà mentionné, il est nécessaire d'ajouter plusieurs balises assibles.
Mon scénario de cas particulier consistait à rendre un antécédent différent en fonction de l'environnement
J'ai utilisé deux fichiers CSS: basic.css et débogu.Css
Ceci est ma solution (symfony 2) (dans les balises d'un modèle de brindille pour 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 %}