Php Twig主模板中特定于租户的CSS文件

Php Twig主模板中特定于租户的CSS文件,php,css,symfony,assetic,Php,Css,Symfony,Assetic,我们有一个symfony 2.4应用程序,它是一个多租户应用程序。这意味着我们在几个组织之间共享相同的代码库,按域名分隔访问。所以它看起来像: {% stylesheets filter='cssrewrite' '@MainBundle/Resources/public/css/bootstrap-2.3.1.css' '@MainBundle/Resources/public/css/bootstrap-responsive-2.3.1.css' '@MainBund

我们有一个symfony 2.4应用程序,它是一个多租户应用程序。这意味着我们在几个组织之间共享相同的代码库,按域名分隔访问。所以它看起来像:

{% stylesheets filter='cssrewrite'
    '@MainBundle/Resources/public/css/bootstrap-2.3.1.css'
    '@MainBundle/Resources/public/css/bootstrap-responsive-2.3.1.css'
    '@MainBundle/Resources/public/sass/main.scss'
%}
  • organization1.domain.com
  • organization2.domain.com
  • organization3.domain.com
我们还使用来处理所有组织都通用的.scss和.css文件。所以基本上所有的租户都有相同的设计。主布局如下所示:

{% stylesheets filter='cssrewrite'
    '@MainBundle/Resources/public/css/bootstrap-2.3.1.css'
    '@MainBundle/Resources/public/css/bootstrap-responsive-2.3.1.css'
    '@MainBundle/Resources/public/sass/main.scss'
%}
其中,在
main.scss
中,我们为所有组织定义了所有的scss规则

现在,其中一个组织要求进行设计更改,而其他组织可能不希望这样做。我想将特定于组织的.css'es或.scss'es放在一个文件夹中,并在主布局中添加另一个
样式表
循环。问题在于资产管理者在处理资源时不愿意尊重细枝变量。让我用一个例子和一个例子来解释,如果我做了类似的事情:

{% stylesheets filter='cssrewrite'
'@MainBundle/Resources/public/sass_organizations/*.css'
%}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen, print" />
{% endstylesheets %}
如果我像后一种方法那样做,assetic捆绑包将崩溃,在…exception中出现值为“~\”的
意外标记\“operator\”,因为它在处理资源时对细枝及其引擎一无所知


TL;DR:需要通过assetic bundle提供css文件,但不是全部在文件夹中,而是基于细枝模板中的条件

在我的项目中,我使用类似于以下解决方案的解决方案:

我们将git_提交部分添加到输出css/js名称中,因为AmazonS3忽略了filename.css?cachebuster=jhjgfsjdfg之类的“缓存buster”


由于您可以访问container:)

非常感谢,@barat!它可以工作,我唯一需要做的就是在我存储overrided.css的目录中创建{organization}.css文件。与此注释中提到的另一个类似:,否则它将失败,出现异常“找不到文件”../{organization}.css”