Assetic и мои активы

Я новичок в Symfony 2 и Assetic. Я бы хотел использовать assets и Sass для своего CSS. Я использую пользовательские шрифты. Я создаю в своем пакете в разделе «Ресурсы» папку «assets/css», и внутри у меня есть _base.scss и main.scss. В моей общей папке у меня есть:

  • css
  • шрифты
  • картинки
  • js

В шрифтах у меня есть свои собственные шрифты.

В моем SCSS я получаю свои шрифты и изображения следующим образом:

    @include font-face("billabongregular", font-files("/bundles/Mybundle/fonts/billabong-webfont.ttf"));
background: $bg_header url("/bundles/Mybundle/images/darkGreyBackground.jpg") fixed no-repeat top center;

У меня есть этот путь после assets:install, и у меня есть файл в web/mybundle/fonts и web/mybundle/images.

Когда я делаю php app/console assetic:dump --env=prod --no-debug

У меня есть в моей сети:

  • css
  • js (папка в открытом доступе)

Но у меня нет папки Fonts и папок с изображениями. Если IO видит исходный код на изображениях, у меня есть этот путь /bundles/Mybundle/images/darkGreyBackground.jpg

Почему у меня не все папки в сети? Правильно ли называть мои изображения и мои шрифты с помощью /bundles/Mybundle/images/darkGreyBackground.jpg и /bundles/Mybundle/fonts/billabong-webfont.ttf?


person Barno    schedule 25.02.2013    source источник
comment
Пожалуйста, прекратите редактировать свой вопрос, чтобы восстановить ужасную нарушенную грамматику.   -  person meagar    schedule 25.02.2013


Ответы (2)


Это стандартное и ожидаемое поведение, когда символические ссылки ресурсов вашего пакета находятся под web/bundles/Mybundle/ после вызова команды php app/console assetic:dump.

Чтобы использовать сгенерированный путь активов в вашем css, вы можете использовать фильтр cssrewrite или, что еще проще, ваши папки css и images находятся в одной и той же основной папке, используйте относительный путь:

@include font-face("billabongregular", font-files("../fonts/billabong-webfont.ttf"));
background: $bg_header url("../images/darkGreyBackground.jpg") fixed no-repeat top center;

ИЗМЕНИТЬ

В вашем комплекте, если вы хотите, чтобы файл был доступен в каталоге web после запуска команды assets:install, вы должны поместить их в каталог Resources/public/, как указано здесь: http://symfony.com/doc/current/book/page_creation.html#bundle-directory-structure

person cheesemacfly    schedule 25.02.2013
comment
Спасибо .. если я использую фон: $bg_header url(../images/darkGreyBackground.jpg) фиксированный верхний центр без повторов; изображение ищется в web/images, но у меня нет этой папки. если я использую cssrewrite, у меня есть этот путь /Resources/assets/images.. - person Barno; 26.02.2013
comment
сейчас я использую bundles/mybundle/images/darkGreyBackground.jpg без использования фильтра cssrewrite. но если я увижу html-страницу, сгенерированную в коде, я вижу такие пути, как /bundles/mybundle/myimage, не думаю, что это правильно, чтобы показать - person Barno; 26.02.2013
comment
Но есть ли у вас этот код CSS внутри файла CSS в ресурсах вашего пакета или непосредственно в вашем каталоге web/css? - person cheesemacfly; 26.02.2013
comment
у меня есть scss внутри Acme/MyBundle/Resources/assets/css/scss Еще раз спасибо - person Barno; 26.02.2013

У меня была та же проблема, и я просто попытался использовать следующее в качестве обходного пути. Кажется, пока работает.

{% stylesheets
    output='assets/fonts/glyphicons-halflings-regular.ttf'
    'bundles/bootstrap/fonts/glyphicons-halflings-regular.ttf'
%}{% endstylesheets %}

Обратите внимание на отсутствие каких-либо выходных данных, что означает, что в шаблоне ничего не отображается. Когда я запускаю assets:dump, файлы копируются в нужное место, и css включает работу, как и ожидалось.

person Cowlby    schedule 19.10.2013
comment
Не знаю, почему за это проголосовали против, но этот обходной путь работает, когда у вас нет доступа к исходным файлам или вы просто не хотите их изменять. - person Cowlby; 26.11.2013
comment
По моему опыту, это приводит к тому, что шрифт передается с неправильным типом MIME, по крайней мере, в Chrome вы получаете: Resource interpreted as Font but transferred with MIME type text/html - person Frank van Luijn; 05.02.2014
comment
@FrankvanLuijn Это проблема с вашим .htaccess/apache.conf. Вы должны быть настроены на обслуживание файлов напрямую, без маршрутов, проходящих через Symfony app.php. - person Twifty; 15.01.2015