Значки не отображаются с MopaBootstrapBundle и FontAwesome

Я пытаюсь создать меню со значками для каждого элемента.

Я использую (или пытаюсь)

  • MopaBootstrapBundle
  • KnpMenuBundle
  • ШрифтПотрясающий

Структура меню отображается и работает нормально, но значки не отображаются. Может ли кто-нибудь поставить меня на правильный путь здесь?

Вот что я сделал до сих пор:

Настройка 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/ не существует в моей настройке, что объясняет отсутствие значков. Однако я не могу понять, как я могу изменить его.

В документации я нашел ссылку на определение переменной @icon-font-path. Я немного не понимаю, где его определить и с каким значением.

NB: файлы шрифтов находятся в моей папке 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.

Я также заметил, что когда я определяю @icon-font-path: "../fonts/"; в /src/<my_bundle>/Resources/public/less/mystyles.less, путь в результирующем файле CSS будет src: url('../fonts/fontawesome-webfont.eot?v=4.2.0');.

Однако, когда я загружаю свое приложение и вызываю файл CCS, сброшенный с помощью assets, путь src: url(../../Resources/public/fonts/fontawesome-webfont.eot?v=4.2.0);


person matt_jay    schedule 30.11.2014    source источник
comment
Попробуйте app/console assets:install. Это должно создать каталоги /bundles/etc. Используйте --symlink для символических ссылок, а не для копирования.   -  person qooplmao    schedule 30.11.2014
comment
Я запустил app/console assets:install, но это ничего не изменило.   -  person matt_jay    schedule 30.11.2014
comment
добавлено обновление о том, где я могу сейчас найти файлы шрифтов   -  person matt_jay    schedule 30.11.2014


Ответы (2)


Изменение в vendor/mopa/bootstrap-bundle/Mopa/BootstrapBundle/Resources/public/less/font-awesome4/variables.less

@fa-font-path: "../шрифты/";

by

@fa-font-path: "../fonts/fa4";

person cesarve    schedule 18.12.2014

Я знаю, что это старый пост, но у меня была та же проблема, те же файлы конфигурации, и я нашел решение.

Эти строки неверны:

'icon' => 'fa-home',

Вы должны заменить их все на:

'icon' => 'home',

Не используйте префикс fa-;)

Вы увидите значок глификона, если в вашем файле конфигурации у вас есть:

mopa_bootstrap:
    form: ~  # Adds twig form theme  support
    menu: ~  # enables twig helpers for menu
    icons:
        icon_set: glyphicon #Use the glyph icons
        shortcut: icon

И вы увидите значок fontawwesome, если замените глификон на fontawesome (это моя проблема), но никогда не используйте префикс «fa-».

mopa_bootstrap:
    form: ~  # Adds twig form theme  support
    menu: ~  # enables twig helpers for menu
    icons:
        icon_set: fontawesome4 #Use the fontawesome4 icons
        shortcut: icon
person Alexandre Tranchant    schedule 10.10.2015