2014-05-06 108 views
3

我創建了一個Bundle,以便將Twitter Bootstap包含到我的項目中。我知道,那裏有現有的Bundles,但我不想單獨控制它。這意味着我不想安裝Less編譯器和類似的東西。Symfony2和Twitter Bootstrap glyphicons

的的.js和.css文件應用好,如果我把它們作爲如下到我的模板:

{% block javascripts %} 
{% javascripts 
'@MyAssetBundle/Resources/public/js/jquery.min.js' 
'@MyAssetBundle/Resources/public/js/bootstrap.js' %} 
<script type="text/javascript" src="{{ asset_url }}"></script> 
{% endjavascripts %} 
{% endblock %} 

{% block stylesheets %} 
{% stylesheets '@MyAssetBundle/Resources/public/css/*' filter='cssrewrite' %} 
    <link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 
{% endblock %} 

我只包括爲了使用引導程序提供了glyphicons適當的字體鬥爭。

根據css的定義,字體應該在../fonts相對於css文件中可用。事實上,我把它們放在那裏。但Symfony2將這個相對URL解析爲一個絕對路徑,並沒有找到一個路徑。

我該如何解決這個問題?我真的覺得我在這裏沒有得到Symfony2概念的重要部分。

回答

6

使用Assetic提供的cssrewrite過濾器來更正CSS文件中的路徑。

{% stylesheets filter='cssrewrite' 
    'bundles/myassetbundle/css/bootstrap.min.css' %} 
    <link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

確保您使用的是bundles/myassetbundle/...符號代替@MyAssetBundle之一。

閱讀關於此事的Symfony docs

+0

我做到了。網址被重寫爲新的。但它仍然不起作用。在重寫URL之前,像http://www.mysite.org/app_dev.php/fonts/glyphicons-halflings-regular.ttf,http://www.mysite.org/Resources/public/fonts/glyphicons-半身人,regular.woff。 –

+0

你可以發佈你的'{%stylesheets%}'塊嗎? – albertedevigo

+0

我已更新答案,請檢查您正在使用的路徑標記。 – albertedevigo

0

我也有這個問題。

從@albertedevigo答案是工作得很好,但是當你需要採取額外的預防措施,有可能是一個情況:

確保在您的Web文件夾移動它的文件之前,您已經提取了充分引導拉鍊。

我第一次只將它們從ZIP中移出,它們在我的Windows資源管理器中顯示爲綠色,我無法訪問它們。因此,確保在移動其內容之前首先解壓該文件夾,並對文件進行完全訪問寫入。