2014-05-06 61 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资源管理器中显示为绿色,我无法访问它们。因此,确保在移动其内容之前首先解压该文件夹,并对文件进行完全访问写入。