在模板中包括资产的组合输出


Including combined output of Assetic in Template

我正在使用Symfony2编写一个应用程序,我遇到一种情况,我想将所有CSS和Javascript资源组合在一起,并将它们包含在我的Twig模板中,这样,最终,只有一个文件通过HTTP请求返回。

    {% block stylesheets %}
        {% stylesheets output='web/css/combined.css' combine=true 
            '@stylesheet1.css'
            '@stylesheet2.css'
            '@stylesheet3.css'
            '@stylesheet4.css'
        %}
        {% endstylesheets %}
        // PSEUDO
        include 'combined.css'
        // END PSEUDO
    {% endblock %}

因此,我希望直接访问输出,而不是使用 Assetic 仅合并文件然后引用它们。所有 CSS 都将位于单个 <style> 标记中,所有 JS 都将位于单个 <script> 标记中。

有没有办法在不扩展现有库的情况下实现这一点?

为什么要直接访问组合资产?

事实上,这就是assetic所做的:在开发环境中,每个样式表都有一个<style>标签,而在prod中,它们都组合在一个.css文件中,因此使用单个<style>。当然,JavaScript文件也会发生同样的情况。

要使后者正常工作(在生产环境中),您需要手动转储它们:

php app/console assetic:dump --env=prod

看看 dev/prod 中的源 HTML weh。我从未使用过combine选项,也没有关于它的官方Symfony 2文档。