2

是否可以使用 Assetic 有条件地加载资产?

例如(peusocode):

load resource1.js
load resource2.js

if condition = true
    load resource3.js
endif

output combined.js
4

2 回答 2

3

不,这是不可能的,因为资产文件是在服务器端编译的,所以资产文件在运行时无法访问变量的值。

一个解决方案可能是添加第二个资产标签

// the first assetic tag

{% if condition %}
    // an other assetic tag
{% endif %}
于 2011-12-08T12:17:16.327 回答
0

我遇到了完全相同的问题。正如julesbou已经提到的,有必要添加几个资产标签。

我的特殊情况是根据环境渲染不同的背景DEV环境为浅灰色,PROD环境为白色。

我使用了两个 CSS 文件:basic.cssdebug.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 %}
于 2014-12-29T19:52:50.850 回答