symfony2无法使用指南针时的资产回退

时间:2013-05-23 12:53:19

标签: symfony assetic compass-sass

我正在使用kriswallsmith资产包来为带有罗盘过滤器的css服务,每次都会在dev环境中生成并且prod环境样式与没有罗盘操作的转储css文件一起提供。所以我想知道如果smyfony无法找到罗盘二进制文件,是否有一种方式在dev env中提供相同的css文件而不是prod env。

以下是我在头脑中加载sass文件的方法:

{% stylesheets filter="compass"
    "@Bundle/Resources/public/css/colors.sass"
    "@Bundle/Resources/public/css/layout.sass"
    "@Bundle/Resources/public/css/menu.sass"
    "@Bundle/Resources/public/css/main.sass"
    "@Bundle/Resources/public/css/fonts.sass"
%}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

您可以在过滤器前使用问号(?),仅在生产模式下应用它,或者在调试模式关闭时更精确地应用它。

{% stylesheets filter="?compass"
    "@Bundle/Resources/public/css/colors.sass"
     // ...
%}
     <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %} 

如果使用assetic:dump而不使用--no-debug选项,也可以将此资产集合的debug选项设置为false,这将阻止资产创建单个文件(以便于调试)。

只要您在开发环境中包含了html中包含的基于JavaScript的编译器,那么Assetic将只连接适用于.sass文件的文件。

{% stylesheets filter="?compass" debug="false"
    "@Bundle/Resources/public/css/colors.sass"
     // ...
%}
     <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %} 

第二个选项是在开发环境中包含一个静态文件。因此,在设置为当前kernel.environment参数的twig部分下的config.yml中添加一个twig全局。

# app/config/config.yml

twig:
    globals:
        env: %kernel.environment%

然后在这样的树枝中使用它:

{% if env == 'dev' %}
    <link rel="stylesheet" href="{{ asset('/path/to/your/compiled/asset.css"') }} />
{% else }
    // ...
 {% endif %}

即使您在网址中使用app_dev.php,asset()帮助程序也会确保您的资产输出正确。