Nachdem Symfony2 das CSS verwaltet, ?ndert Symfony2 den Pfad des CSS, ?ndert jedoch nicht den Pfad des im CSS definierten Hintergrundbilds, was dazu führt, dass das Hintergrundbild nicht angezeigt wird soll ich tun? Vielen Dank im Voraus!
如果你是使用的 Assetic 的話,那么你需要添加 cssrewrite fileter,即:
{% stylesheets 'bundles/app/css/*' filter='cssrewrite' %}
這個過濾器是什么意思呢?
在你 assets:dump(或者 assets:install) 的時候,Symfony2 會將你的靜態(tài)文件(CSS)從 Bundle 中移出到 Web 根目錄,因此有些文件的路徑就發(fā)生了變化(比如在css中引用的圖像),從而導(dǎo)致了主題所說的問題。
因此 cssrewrite 過濾器就是專門用來計算 css 與圖像之間的相對關(guān)系,并直接更新 CSS 中的路徑。
跟你舉個實際應(yīng)用中的例子,你現(xiàn)在有兩個文件 logo.png 和 style.css:
/src/AppBundle/Resources/public/img/logo.png
/src/AppBundle/Resources/public/css/style.css
你在 style.css 里引用 logo.png 需要 ../img/logo.png,對吧?
現(xiàn)在,當(dāng)你 assets:dump 時,Symfony2 的 Assetic 組件會將 logo.png 和 style.css 導(dǎo)出到 /web 目錄,因為 /src 下是不能直接訪問的,現(xiàn)在 logo.png 和 style.css 將會被導(dǎo)出在新目錄:
/web/bundles/app/img/logo.png
/web/css/11e4a17.css
你會看到,11e4a17.css(style.css 被重命名后的文件) 和 logo.png 的相對關(guān)系已經(jīng)發(fā)生了變化,原先的 ../img/logo.png 已經(jīng)不能引用到 logo.png 了,cssrewrite 的意義就在于,它將更新 11e4a17.css(style.css) 中的 ../img/logo.png 為 ../bundles/app/img/logo.png。
啰嗦說這么多,希望能幫到題主。