Symfony 2分割较少的文件

时间:2012-06-09 23:10:24

标签: symfony less assetic

我正在使用Symfony 2构建一个网站并使用Less,就像这样

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只在其正在编译的文件中搜索mixins。 顺便说一下,我使用的是lessphp,而不是node.js。

如何解决我的问题?如何使用mixins.less文件中声明的mixin来使用不同的Less文件?

1 个答案:

答案 0 :(得分: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 %}

通过这种方式,您可以为同一个捆绑包中的控制器或捆绑包提供少量文件,只需导入标记所需的相关文件(例如frontend.lessbackend.less,{{1 }})。

我鼓励您查看Twitter Bootstrap handles imports and separates everything nicely

的方式