如何动态保存所有.css路径,然后将它们传递给assetic进行压缩?(在Symfony 2中)


How to dynamically save all the .css paths and then pass them to assetic for compression? (in Symfony 2)

我很难处理样式表和java脚本。

assetic+Titch的所有示例都假设您事先知道所需文件的所有路径。

假设我想创建一个"关于"页面。

"about.html.trick"模板从"layout.html.tritch".扩展而来

布局必须有几个.css和.js,它们将在整个网站中使用。

about模板必须加载特定于它的其他.css和.js文件。

所以样式表块看起来像这样:

{% block stylesheets %}
{{ parent() }}
<link href='bla'> {# more stylesheets #}
{% endblock %}

那么在这种情况下我该如何使用assetic?

我是否应该从一开始就发送网站的所有资产,因为即使这样,性能也会提高?

问题是.css之间可能存在冲突,有时你加载.css只是为了覆盖你自己的基本设置,所以你不能只为整个网站创建一个.css。

我还尝试设置一个数组来存储所有路径,然后循环,并将路径传递给assetic。但是,twitch似乎不支持语法css[]="another_path.css"。您必须在一个分配中设置整个数组

是的,您对assetic Twig扩展的语法是正确的。您确实知道要包括的所有资产。但这是设计出来的,因为在生产中,您需要转储组合和缩小的CSS/JS,这样web服务器就可以在不涉及PHP的情况下处理它。

我给你最好的建议是,确定你很乐意包含在网站所有页面上的所有样式表,并对它们进行资产样式表调用。

然后,对于需要额外样式表的特定页面,您可以在需要时进行第二次资产调用。

layout.html.trick

// do common styles
{% stylesheets 'css/reset.css'
               'css/960.css'
               'css/foobar.css'
               filter='yui_css' %}
    <link rel="stylesheet" media="screen" href="{{ asset_url }}" />
{% endstylesheets %}
// use an empty block for extra styles
{% block extra_styles %}{% endblock %} 

someview.html.trick

{% block extra_styles %}
    {% stylesheets 'css/about1.css'
                   'css/about2.css'
                   filter='yui_css' %}
        <link rel="stylesheet" media="screen" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

另一个可能更容易的解决方案是重构CSS,这样就可以一次性下载所有样式。