Symfony2 — используйте Bootstrap (глификон) и jQuery

Я новичок в Symfony и пытаюсь интегрировать определенную тему Bootstrap и jQuery.

Поскольку файлы css, файлы js и шрифты являются общими для всех пакетов, я помещаю ресурсы в каталог app\Resources\public.

В этом каталоге у меня есть следующая архитектура:

  • css
    • bootstrap.min.css
    • jquery-ui.min.css
    • мой-css.min.css
  • fonts
    • glyphicons-halflings-regular.eot
    • глификоны-halflings-regular.svg
    • glyphicons-halflings-regular.ttf
    • глификоны-полурослики-regular.woff
  • js
    • bootstrap.min.js
    • jquery-1.9.1.мин.js

У меня также есть файл layout.html.twig в каталоге app\Resources\views, который является моим основным макетом. В этом макете я загружаю файлы css и js со следующими блоками веток:

<!-- CSS -->
{% block stylesheets %}
  {% stylesheets filter='cssrewrite'
    '../app/Resources/public/css/bootstrap.min.css'
    '../app/Resources/public/css/jquery-ui.min.css'
    '../app/Resources/public/css/my-css.min.css'
  %}
  <link href="{{ asset_url }}" rel="stylesheet" media="screen">
  {% endstylesheets %}
{% endblock %}

<!-- JS -->
{% block JavaScript %}
  {% javascripts
    '../app/Resources/public/js/jquery-1.9.1.min.js'
    '../app/Resources/public/js/bootstrap.min.js'
  %}
    <script type="text/javascript" src="{{ asset_url }}"></script>
  {% endjavascripts %}
{% endblock %}

Файлы CSS правильно загружаются на мои страницы, но у меня возникает ошибка, когда я использую глификон. Значки, например, на кнопке не загружаются, а в консоли Firefox у меня ошибка 403:

GET 
http://localhost/mylibrary-web/app/Resources/public/fonts/glyphicons-halflings-regular.woff [HTTP/1.1 403 Forbidden 4ms]

Я безуспешно пытаюсь изменить файл security.yml:

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt|error)|css|images|js|fonts)/
        security: false

Как я могу разрешить доступ к каталогу fonts? Спасибо за вашу помощь!


person rolandl    schedule 24.04.2015    source источник
comment
Вы не должны использовать абсолютный путь, подобный этому, в активе. Вы либо предоставляете краткий синтаксис, который в конечном итоге будет проанализирован Symfony: @AcmeBarBundle/Resources/public/js/form.js, либо используете путь, который начинается из вашей веб-папки: 'bundles/app/css/*' Обратите внимание на свой URL, он вообще не должен вести к /app/! Взгляните на документацию symfony.com/doc/current/cookbook/assetic/ assets_management.html   -  person Artamiel    schedule 25.04.2015
comment
Значит, я не должен помещать свои ресурсы в событие каталога app, если они являются глобальными для приложения и не относятся к пакету? Я должен положить ресурсы в пакет или прямо в папку web? Вот так ?   -  person rolandl    schedule 25.04.2015
comment
Если ваши ресурсы считаются не связанными с пакетами, то я полагаю - да, вы можете поместить их в свою папку web для правильного доступа. В противном случае вы можете использовать папку пакета Resources и просто использовать опцию --symlink для создания ресурсов.   -  person Artamiel    schedule 25.04.2015


Ответы (2)


Я предполагаю, что вы неправильно настроили свой веб-сервер. Если вы используете сервер Apache, вы можете настроить его следующим образом: https://github.com/fontello/fontello/wiki/How-to-setup-server-to-serve-fonts

person nZeus    schedule 24.04.2015

Наконец-то я решил работать без Assetic...

Я помещаю файлы CSS, JS и шрифтов непосредственно в каталог web\bundles\app проекта и использую следующий код для импорта CSS или JS в свой макет Twig:

<link href="{{ asset('bundles/app/css/bootstrap.min.css') }}" rel="stylesheet" media="screen">
<link href="{{ asset('bundles/app/css/jquery-ui.min.css') }}" rel="stylesheet" media="screen">
<link href="{{ asset('bundles/app/css/custom.min.css') }}" rel="stylesheet" media="screen">

Это не лучшее решение, но оно работает :)

person rolandl    schedule 30.04.2015