2012-06-09 49 views
1

我建立一個網站,Symfony的2和少用,這樣Symfony的2分割少的文件

index.html.twig:

{% stylesheets 
    '@AcmeWebappBundle/Resources/public/css/website.less' 
    filter='?yui_css' 
%} 
<link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

config.yml:

assetic: 
    filters: 
     lessphp: 
      file: %kernel.root_dir%/../vendor/lessphp/lessc.inc.php 
      apply_to: "\.less$" 

現在文件website.less增長很多,所以我決定將它分成不同的文件,如下所示:

{% stylesheets 
    '@AcmeWebappBundle/Resources/public/css/mixins.less' 
    '@AcmeWebappBundle/Resources/public/css/general.less' 
    '@AcmeWebappBundle/Resources/public/css/tasks.less' 
    '@AcmeWebappBundle/Resources/public/css/notes.less' 
    filter='?yui_css' 
%} 
<link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

文件mixins.less包含我在其他文件中使用的所有mixins

問題是,如果我在notes.less中引用了mixin,那是無法識別的 - 我相信這是因爲Assetic僅在它正在編譯的文件內搜索mixin。 順便說一句,我使用lessphp,而不是node.js.

我該如何解決我的問題?如何使用mixins.less文件中聲明的mixin來使用不同的Less文件?

回答

7

在您的例子,你需要保持website.less,只是有它導入所有的相關的減檔,就像這樣:

website.less:

/* import the necessary less files */ 
@import "mixins.less"; 
@import "general.less"; 
@import "tasks.less"; 
@import "notes.less"; 

index.html.twig:

{% stylesheets 
    '@AcmeWebappBundle/Resources/public/css/website.less' 
    filter='?yui_css' 
%} 
<link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

這種方式,你可以有幾個更小的文件爲您的控制器或束,其住在同一個包,只導入所需的標記(例如的相關文件,backend.less,mobile.less)。

我鼓勵你看看Twitter Bootstrap如何handles imports and separates everything nicely