symfony2资产路径在symfony2.7中突然转义

时间:2015-06-19 07:25:41

标签: symfony assetic

我正在将我的代码从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$"

编译的文件越少越好。问题是网页中生成的网址,如下所示:

<link rel="stylesheet" href="\2F css\2F 36f682f\5F bootstrap\5F 1\2E css"/>

当我将一个原始过滤器添加到twig文件时,路径就可以了。

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

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

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

我已经看过我使用composer的所有依赖项,它们似乎是最新的稳定版本(没有使用dev版本)。

2 个答案:

答案 0 :(得分:1)

symfony2.7以不同的方式解析文件,具体取决于文件扩展名(或名称)。

变量&#34; asset_url&#34;仅在 .html.twig 文件中受到保护(并且没有转义)。 在其他情况下(对于例如:head.js.twig,head_js.twig等),它将被转义,因此需要&#34; | raw&#34; 过滤。

答案 1 :(得分:0)

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

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

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