2015-06-19 28 views
1

我正在将我的代码从symfony2.6升级到symfony2.7,并用我的资产运行到一个奇怪的事情。symfony2资产路径突然在symfony2.7中逃脱

示例代码有点缩短。

我用这个来设置我的CSS文件在head.html.twig。

{% 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 #} 
<link rel="stylesheet" href="{{ asset_url|raw }}"/> 

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

任何想法如何弥补这一点? 我讨厌通过我所有的树枝文件并添加原始过滤器。

我已经看过了所有依赖,我正在使用作曲家,他们似乎是在最新的稳定版本(没有开发版本被使用)。

回答

0

我仍然不确定为什么我遇到了这个问题,但我已经解决了我的基本模板中的一个小改变的问题。

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

它也可能与调用parent()模板相关,这会在特定页面上添加adobeal css或javascript。

1

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

只有在.html.twig文件中,变量“asset_url”才被保护(且不会转义)。 在其他情况下,(对于例如:head.js.twig,head_js.twig等),它将会逃脱并因此需要“过滤”“| raw”过滤器。

+0

谢谢,这是我的解决方案。我有名称为“thing.css.twig”的文件已被破坏。重命名为“thing.css.html.twig”解决了问题! – spectralsun