symfony2 assetic 路径突然在 symfony2.7 中逃逸

symfony2 assetic path suddenly escaped in symfony2.7

我正在将我的代码从 symfony2.6 升级到 symfony2.7 并且 运行 将我的资产变成一个奇怪的东西。

示例代码略有缩短。

我正在使用它在 head.html.twig 中设置我的 css 文件。

{% stylesheets '@MyAwesomeBundle/Resources/subfolder*.less' %}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}

这在我的配置文件中:

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    bundles:
      - MyAwesomeBundle
    node:       %path.nodejs%
    node_paths: [ %path.node_modules% ]
    filters:
        less:
            apply_to:   "\.less$"

less 文件编译正常。问题是网页中生成的 url,看起来像这样:

<link rel="stylesheet" href="F cssF 36f682fF bootstrapF 1E css"/>

当我向 twig 文件添加 |raw 过滤器时,路径就很好。

{# twig #}
<link rel="stylesheet" href="{{ asset_url|raw }}"/>

{# resulting html #}
<link rel="stylesheet" href="/css/36f682f_bootstrap_1.css"/>

知道如何解决这个问题吗? 我讨厌浏览我所有的树枝文件并添加原始过滤器。

我查看了我使用 composer 引入的所有依赖项,它们似乎是最新的稳定版本(未使用开发版本)。

我仍然不确定为什么我 运行 会遇到这个问题,但我已经通过对基本模板进行一些小改动解决了我的问题。

我的基本模板中有一个名为 "head" 的块。其中包括 2 个用于默认 css 和 js 文件(应始终包含)的外部模板。 当我将这些模板的内容移动到基本模板中时,我的问题就消失了。 该问题仅存在于那些 css+js 文件中。其他地方没有这个问题。

它也可能与调用 parent() 模板有关,可以在特定页面上添加额外的 css 或 javascript。

symfony2.7 根据文件扩展名(或名称)以不同方式解析文件。

变量 "asset_url" 仅在 .html.twig 文件中受到保护(且未转义)。 在其他情况下 (例如:head.js.twig、head_js.twig 等),它将转义,因此需要 "| raw"。 =17=]过滤器。