我正在将我的代码从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版本)。
答案 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。