Symfony2和Twitter Bootstrap的glyphicons

3

我创建了一个Bundle,以便将Twitter Bootstrap包含到我的项目中。我知道已经有为此目的创建的Bundles,但我想自己掌控它。这意味着我不想安装Less编译器之类的东西。

如果我按以下方式将.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 %}

我只是在努力包含适当的字体,以便使用Bootstrap提供的glyphicons。

根据css定义,字体应该在相对于css文件的../fonts路径下可用。实际上,我把它们放在那里。但是Symfony2将这些相对url解析为绝对路径,并找不到路由。

我该如何解决这个问题?我真的觉得自己没有理解Symfony2概念的重要部分。

2个回答

6
使用Assetic提供的cssrewrite过滤器来修正CSS文件中的路径。
{% stylesheets filter='cssrewrite'
    'bundles/myassetbundle/css/bootstrap.min.css' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

请确保您使用的是这种表示方式,而不是@MyAssetBundle

请阅读Symfony文档以了解更多信息。


我已经把URL重写成了新的URL,但仍然不起作用。在重写之前,URL是像http://www.mysite.org/app_dev.php/fonts/glyphicons-halflings-regular.ttf这样的,现在变成了http://www.mysite.org/Resources/public/fonts/glyphicons-halflings-regular.woff。 - magic_al
你能贴出你的 {% stylesheets %} 代码块吗? - albertedevigo
我已更新答案,请检查你所使用的路径表示法。 - albertedevigo
我更新了我的问题并包含了CSS代码。@albertedevigo:你提出的包含CSS文件的方法根本不起作用。这意味着Symfony不再包含任何CSS。 - magic_al
2
嗯,那种方式是正确的,看看文档。所以它应该可以工作。也许你没有正确地转储你的资产。尝试 cache:clear,然后 assets:install,最后 assetic:dump。检查在安装你的资产后,一切是否都在 web 目录下的正确位置。 - albertedevigo
好的,assetic:dump 完成了。谢谢。 - magic_al

0

我也遇到过这个问题。

@albertedevigo的答案完全有效,但有时候你需要采取额外的预防措施:

确保在将文件移动到您的Web文件夹之前已经提取了完整的bootstrap zip文件。

我最初只是从ZIP文件中移动它们,它们会在我的Windows资源管理器中显示为绿色,我无法访问它们。因此,请确保先解压缩文件夹,然后再移动其内容并对文件进行完全访问和写入权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接