2015-06-19 15 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