在Symfony2中不尊重Assetic CSS

时间:2014-03-11 20:18:13

标签: css symfony assetic

我正在使用Assetic为我的Symfony2项目加载CSS文件。 CSS加载正确,我可以在检查Chrome中的元素/来源时查看它,但页面仍未设置样式。此时文件中唯一的内容是:

Assetic Generated: core_part_1_base_1.css
body {
    background-color: yellow;
}

::base.html.twig:
<html>
    <head>
        {% stylesheets '@AcmeCoreBundle/Resources/public/css/*.css output='css/core' %}
            <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
        {% endstylesheets %}
    </head>
    <body>
       <div id="main_container">Hello World</div>
    </body>
</html>

config.yml:
    ...
    assetic:
        debug:          %kernel.debug%
        use_controller: false
        bundles:        [ ]
        filters:
            cssrewrite: ~
    ...

删除样式表块并替换为此行:

<link rel="stylesheet" type="text/css" href="{{ asset('css/core.css') }}" />

似乎已经奏效了,但我希望尽可能使用样式表块来实现它!

2 个答案:

答案 0 :(得分:1)

我认为您必须在Assetic配置的bundles选项中添加要在其中使用Assetic的捆绑包:

assetic:
    bundles: [AcmeCoreBundle]

此外,在输出名称中添加扩展名可能会有所帮助:output='css/core.css'

答案 1 :(得分:0)

您的网页“未被设置样式”是一个相当模糊的陈述。你的CSS没有加载或只是图像?

如果您的css文件中有@imports或引用图片,那么在您的javascripts块中,您必须使用filter='cssrewrite'才能正常工作:

    {% stylesheets '@AcmeCoreBundle/Resources/public/css/*.css filter='cssrewrite' output='css/core.css' %}
        <link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
    {% endstylesheets %}

此外,您的输出似乎没有.css扩展名,我不知道这是否重要,但您不妨尝试。

另一方面,有些时候,由于某些原因,当我在样式表块中添加output选项时,它在生产环境中不起作用,但它在开发中起作用。我发现最简单的解决方案就是不使用output,并使用像Grunt这样的外部工具连接/ uglify /最小化我的文件。