【发布时间】:2014-11-30 12:05:38
【问题描述】:
我正在尝试为每个元素构建一个带有图标的菜单。
我正在使用(或尝试)
- MopaBootstrapBundle
- KnpMenuBundle
- FontAwesome
菜单结构显示正常,但图标未显示。谁能在这里让我走上正确的轨道?
这是我到目前为止所做的:
设置 config.yml:
assetic:
debug: "%kernel.debug%"
use_controller: false
filters:
cssrewrite: ~
cssembed:
jar: %kernel.root_dir%/Resources/java/cssembed.jar
apply_to: "\.css$|\.less$"
yui_css:
jar: "%kernel.root_dir%/Resources/java/yuicompressor.jar"
yui_js:
jar: "%kernel.root_dir%/Resources/java/yuicompressor.jar"
[...]
mopa_bootstrap:
form: ~ # Adds twig form theme support
menu: ~ # enables twig helpers for menu
icons:
icon_set: fontawesome4
shortcut: icon
在我的/app/Resources/MopaBootstrapBundle/views/layout.html.twig 中包含引导样式
{% block head_style %}
{{ parent() }}
{% stylesheets filter='less,cssrewrite,?yui_css'
'bundles/mopabootstrap/less/mopabootstrapbundle-fa4.less'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
{% endblock head_style %}
构建我的菜单:
public function createMainMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem(
'root', array(
'navbar' => true,
)
);
// Main Menu -> Config
$menu->addChild('Item 1', array(
'route' => 'home',
'caret' => true,
'icon' => 'fa-home',
)
);
$dropdown = $menu->addChild('Item 2', array(
'dropdown' => true,
'caret' => true,
'icon' => 'fa-archive',
)
);
$dropdown->addChild('Sub-item 1', array('route' => 'si1'));
$dropdown->addChild('Sub-item 2', array('route' => 'si2'));
$dropdown->addChild('Sub-item 3', array('route' => 'si3'));
return $menu;
}
查看页面源,我发现所有类都设置正确。但是,在链接的样式表中,我发现了这个:
/* FONT PATH
* -------------------------- */
@font-face {
font-family: 'FontAwesome';
src: url(../../bundles/mopabootstrap/fonts/fontawesome-webfont.eot?v=4.2.0);
src: url(../../bundles/mopabootstrap/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'), url(../../bundles/mopabootstrap/fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'), url(../../bundles/mopabootstrap/fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'), url(../../bundles/mopabootstrap/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');
font-weight: normal;
font-style: normal;
}
路径../../bundles/mopabootstrap/fonts/ 在我的设置中似乎不存在,这可以解释缺少的图标。但是,我不知道如何修改它。
在documentation 中,我找到了对@icon-font-path 变量定义的引用。我不知道在哪里定义它以及使用哪个值。
注意:字体文件确实位于我的web/fonts 文件夹中。这一切都发生在 Windows 机器上。
更新:
我在以下位置找到 FontAwesome 文件:
<my_project_path>\web\bundles\mopabootstrap\fonts\fa4<my_project_path>\web\fonts
只有 Glyphicon 字体文件可以在
中找到-
<my_project_path>\web\bundles\mopabootstrap\bootstrap\fonts。
我还注意到,当我在 /src/<my_bundle>/Resources/public/less/mystyles.less 中定义 @icon-font-path: "../fonts/"; 时,生成的 CSS 文件中的路径是 src: url('../fonts/fontawesome-webfont.eot?v=4.2.0');
但是,当我加载我的应用程序并调用由assetic转储的CCS文件时,路径是src: url(../../Resources/public/fonts/fontawesome-webfont.eot?v=4.2.0);
【问题讨论】:
-
试试
app/console assets:install。那应该创建/bundles/etc目录。将--symlink用于符号链接而不是副本。 -
我跑了
app/console assets:install,但没有任何改变。 -
添加了我目前可以在哪里找到字体文件的更新
标签: twitter-bootstrap symfony knpmenubundle