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環境では白です。
basic.cssとdebug.cssの 2 つの 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 %}