Symfony 2.3 — использование Twitter Bootstrap 3 с LESS, установленное в качестве поставщика через установку композитора, невозможно получить доступ к шрифтам Glyphicons

Я хочу использовать Twitter Bootstrap с Symfony 2 без использования пакетов. Мне удалось установить MopaBootstrapBundle, но я решил удалить его и использовать обычный ТБ.

Настраивать

композитор.json

"require": {
    "twbs/bootstrap": "dev-master"
}

Итак, после установки с композитором путь [project_path]/vendor/twbs/bootstrap идентичен: https://github.com/twbs/bootstrap

config.yml

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ ]
    filters:
        cssrewrite: ~
        less:
            node: /usr/bin/nodejs 
            node_paths: [/usr/lib/nodejs:/usr/lib/node_modules]
            apply_to: "\.less$"

Я создал новый пакет для своего проекта AcmeDemoBundle и добавил папку [project_path]/src/Acme/DemoBundle/Resources/public/less, содержащую два файла:

  • variables.less — копия [project_path]/vendor/twbs/bootstrap/less/variables.less, которую я могу изменить, не затрагивая оригинальный пакет TB
  • style.less

содержимое style.less:

@import "../../../../../../vendor/twbs/bootstrap/less/bootstrap.less";
@import "variables.less";

// any local changes should go below this line
[some local less code]

In base.html.twig

{% stylesheets '@AcmeDemoBundle/Resources/public/less/style.less' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

Эта проблема

Все работало нормально, пока я не захотел использовать Glyphicons, включенные в Twitter Bootstrap.

<span class="glyphicon glyphicon-search"></span>

Glyphicons использует шрифты для представления значков, расположенных в Twitter Bootstrap здесь: https://github.com/twbs/bootstrap/tree/master/fonts

Чтобы использовать их, мне пришлось создать следующую символическую ссылку.

[project_path]/web/fonts -> [project_path]/vendor/twbs/bootstrap/fonts/

В среде prod все выглядит замечательно (разве что шрифт отображается немного четким), но в среде dev шрифт не загружается из-за наличия /app_dev.php/ в расположении файла. Итак, я получаю эту ошибку в консоли браузера:

GET http://cmmp.localdev/app_dev.php/fonts/glyphicons-halflings-regular.woff 404 (Not Found) cmmp.localdev/app_dev.php/:1
GET http://cmmp.localdev/app_dev.php/fonts/glyphicons-halflings-regular.ttf 404 (Not Found) /app_dev.php/fonts/glyphicons-halflings-regular.ttf:1
GET http://cmmp.localdev/app_dev.php/fonts/glyphicons-halflings-regular.svg 404 (Not Found) /app_dev.php/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular:1

Использование фильтра cssrewrite только изменяет ошибки в консоли для dev на:

GET http://cmmp.localdev/Resources/public/fonts/glyphicons-halflings-regular.woff 404 (Not Found) cmmp.localdev/:75
GET http://cmmp.localdev/Resources/public/fonts/glyphicons-halflings-regular.ttf 404 (Not Found) cmmp.localdev/:75
GET http://cmmp.localdev/Resources/public/fonts/glyphicons-halflings-regular.svg 404 (Not Found) cmmp.localdev/app_dev.php/:75

Вопрос

Я мучаюсь уже несколько дней, и, несмотря на множество вопросов и решений, найденных здесь, на StackExchange, я не смог это исправить.

Что мне не хватает? Как мне это исправить?


person VMC    schedule 18.09.2013    source источник


Ответы (2)


Я исправил это довольно просто, и теперь мне немного стыдно даже спрашивать. Хотя я уверен, что этот пост поможет другим лучше понять, как использовать Twitter Bootstrap с Symfony 2 без использования дополнительных пакетов:

Решение

Мне пришлось изменить переменную Twitter Bootstrap @icon-font-path на:

// original value "../fonts/"
@icon-font-path: "../../../fonts/";

Итак, вместо пути:

http://cmmp.localdev/Resources/public/fonts/glyphicons-halflings-regular.woff

Я получил:

http://cmmp.localdev/fonts/glyphicons-halflings-regular.woff

который указывает на вышеупомянутую символическую ссылку:

[project_path]/web/fonts -> [project_path]/vendor/twbs/bootstrap/fonts/

Примечание.

Это работает ТОЛЬКО при использовании фильтра cssrewrite.

person VMC    schedule 19.09.2013

Может быть полезно для вас, попробуйте установить меньше с помощью sudo

http://blog.servergrove.com/2012/03/16/error-cannot-find-module-less-with-symfony2-assetic-and-twitter-bootstrap/

person M.B Kakadiya    schedule 19.09.2013
comment
МЕНЬШЕ работает нормально. Как указано выше, проблема заключается в пути к папке шрифтов в среде dev. - person VMC; 19.09.2013