在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件

Posted

技术标签:

【中文标题】在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件【英文标题】:Run CSS file through Twig when using % stylesheets % tag in Twig with Symfony2在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件 【发布时间】:2012-06-17 11:46:25 【问题描述】:

我在我的模板中包含 CSS 样式表,如下所示:

% stylesheets
    "@SomeBundle/Resources/assets/css/default.css.twig"
    "@SomeBundle/Resources/assets/css/global.css.twig"
%
    <link rel="stylesheet" href=" asset_url " />
% endstylesheets %

但是我想通过 Twig 运行这些 CSS 文件,这在使用 % stylesheets % 标记时是否有可能,或者这是否需要其他方法。我已经尝试启用 twig 过滤器,但它不存在。

【问题讨论】:

stylesheets 标签与 Twig 无关。此标签由AsseticBundle 提供。你能澄清你的问题吗,我很难理解你试图达到的目标:) @Matt 好吧,我想保留 Assetic 给我的好处,同时首先通过 Twig 运行样式表。 @Xeross 如果您能更具体地说明为什么要这样做,您可能会看到更好的结果。 【参考方案1】:

如果您将 css 作为内部样式表加载,则可以这样做。像这样的:

% block stylesheets %
     parent() 
    % include 'AcmeBundle:Bundle:mycss.css.twig' %
% endblock %

然后 mycss.css.twig 模板将包含:

<style type="text/css">
    /* */
</style>

【讨论】:

是的,我确实想到了这一点,但是您失去了将样式保存在单独缓存的文件中的好处。【参考方案2】:

您希望通过使用 Twig 处理 CSS 来完成的最常见的事情应该可以使用 Sass、LESS 或类似的东西来实现,它们可以用作 Assetic 过滤器。谷歌发布的第一个教程是这个:http://alexandre-salome.fr/blog/Sass-Compass-Assetic-In-Ten-Minutes

诚然,如果您无法在您正在开发的生产服务器上运行 Ruby/Node.js/任何东西,这看起来并没有太大帮助,但应该可以基于一个创建 Assetic 过滤器Sass/LESS 的 php 端口(假设它们很好)如果是这样的话。

【讨论】:

以上是关于在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 在 Twig 中获取用户角色

在 Symfony2 中使用 Twig 作为 JavaScript 的资产过滤器

Symfony2 - 在 TWIG 模板中获取当前 URL 或路由?

使用 Symfony2/Twig 创建引导轮播

使用 Twig 处理动态 Javascript 文件

Symfony2 中的 Twig CamelCase 过滤器