2011-06-30 13 views
2

我很难处理样式表和javascripts。如何动态保存所有.css路径,然后将它们传递给资产进行压缩? (在Symfony 2中)

资产+树枝的所有示例都假设您事先知道所需文件的所有路径。

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

'about.html.twig'模板从'layout.html.twig'扩展。

该布局必须包含一些将在整个站点中使用的.css和.js文件。

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

所以样式块看起来是这样的:

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

那我怎么在这种情况下使用assetic?

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

问题是,.css之间可能会有冲突,有时您加载.css只是为了覆盖您自己的基本设置,因此您不能只为整个网站创建一个.css文件。

我也尝试设置一个数组来存储所有的路径,然后循环,并将路径传递给资产。但是它似乎不支持树枝语法css [] ='another_path.css'。您必须将整个阵列设置为一次分配

回答

2

是的,您是正确的资产性Twig扩展的语法确实希望您知道要包含的所有资产。但这是设计的原因,因为对于生产而言,它打算将转换后的CSS和JS混合在一起,以便它可以在不涉及PHP的情况下由Web服务器处理。

我最好给你的建议是确定你喜欢的所有样式表,包括在你网站的所有页面上,并为他们制作资产样式表。

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

layout.html.twig

// 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.twig

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

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

+0

哦,我明白了。那么,谢谢=) – HappyDeveloper

相关问题