Я прочитал много сообщений об этом, но не смог заставить это работать для моего проекта.
Таким образом, у меня есть проект Symfony2, который включает twitter bootstrap (v3). Все отлично работает в режиме dev, но когда я пробую его в режиме prod, у меня появились ошибки, говорящие о том, что шрифты бутстрапа twitter не найдены:
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/Symfony/css/fonts/glyphicons-halflings-regular.woff Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/Symfony/css/fonts/glyphicons-halflings-regular.ttf Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/Symfony/css/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular
Это нормально, потому что у меня нет css / folder в Symfony /
Вот как структурирован проект:
app/ src/ vendor/ web/ css/ compiled/ fonts/ js/
twig файл:
{% block stylesheets %} {% stylesheets output="css/compiled/main.css" filter='cssrewrite' 'css/bootstrap.min.css' 'css/general.css' 'css/navigation.css' %} <link rel="stylesheet" href="{{ asset_url }}" /> {% endstylesheets %} {% endblock %}
Я использовал:
php app/console assetic:dump --env=prod
Я проверил файлы bootstrap.min.css (в файлах web / css / compiled) (prod и dev), и оба они имеют одинаковый путь для шрифтов. Что-то вроде (../../../fonts/fontName.ext).
Если мы посмотрим на путь, он не должен работать ни в dev, ни в режиме prod, поскольку путь помещает шрифты / файл за пределы веб-каталога. Тем не менее, он работает в режиме dev.
Любая идея о том, как разрешить это?
Я был бы великодушен.
Если вы используете фильтр «cssrewrite», он переписывает путь к файлам-шрифтам (к их исходному источнику), как уже сказал Maxoo .
Вы можете добавить ассетный путь для файлов шрифтов следующим образом (чтобы они были скопированы в папку css/fonts/
и css-файлы найдут их с использованием оригинального пути ../fonts/
)
Я использовал следующее решение:
config.yml:
assetic: debug: %kernel.debug% use_controller: false assets: bootstrap_fonts_woff: inputs: - 'original/path/to/bootstrap/fonts/glyphicons-halflings-regular.woff' output: fonts/glyphicons-halflings-regular.woff bootstrap_fonts_ttf: inputs: - 'original/path/to/bootstrap/fonts/glyphicons-halflings-regular.ttf' output: fonts/glyphicons-halflings-regular.ttf bootstrap_fonts_svg: inputs: - 'original/path/to/bootstrap/fonts/glyphicons-halflings-regular.svg' output: fonts/glyphicons-halflings-regular.svg bootstrap_fonts_eot: inputs: - 'original/path/to/bootstrap/fonts/glyphicons-halflings-regular.eot' output: fonts/glyphicons-halflings-regular.eot
Затем позвоните
php app/console assetic:dump --env=prod
который должен экспортировать файлы в каталог fonts внутри вашей веб-папки.
Надеюсь это поможет!
Вам не нужно искать их по Symfony/
path, infact Symfony2 webfolder – это web/
поэтому URL-адрес является «относительным» для web/
каталога.
BTW, вы должны использовать следующую команду
php app/console assets:install
Если вам нравится иметь символические --symlink
вы также можете добавить параметр --symlink
в свою команду
assets:install
символизирует или копирует нужные ресурсы в «общедоступную веб-папку»,
assetic:dump
объединяет только js в один
Правильное решение:
Установите Nodejs, настройте файл конфигурации symfony2, он автоматически сгенерирует фильтр cssrewrite по вашему выбору в CSS. Это устранит эти ошибки.
my config.yml и config_dev.yml выглядят как просто аксессуарная секция. Будьте очень осторожны с синтаксисом пути, иначе вы получите эту ошибку. Ошибка при запуске: … Ошибка: не удается найти модуль «less» «Any многие люди столкнулись с этими тремя сообщениями об ошибках в этой строке, чтобы узнать «Произошла ошибка во время работы: Ошибка: не удается найти модуль« меньше »»
assetic:
debug: '%kernel.debug%' use_controller: enabled: '%kernel.debug%' profiler: true filters: cssrewrite: ~ ###is for linux path i am on windows for dev and linux for prod less: ###node: /usr/bin/nodejs ###node_paths: [/usr/lib/nodejs] node: "C:\\Program Files (x86)\\nodejs\\node.exe" node_paths: ["C:\\Users\\John\\AppData\\Roaming\\npm\\node_modules"] apply_to: "\.less$"
не забудьте установить «npm install -g less»
В моем конкретном случае: при выполнении «php app / console assetic: dump» я получаю эту же ошибку. Это связано с тем, что мой веб-сервер Windows dev настроен следующим образом: корень сети – «C: \ xampp \ htdocs», и проект похож на этот «C: \ xampp \ htdocs \ phantom \», а assetic: dump помещает глификон -halflings-regular.ttf, glyphicons-halflings-regular.woff и glyphicons-halflings-regular.woff2 в «C: \ xampp \ htdocs \ phantom \ web \ fonts» ОДНАКО, когда страница загружается, она выглядит в « http: // localhost / ", как вы видите, это проблема с моей настройкой разработки. Поэтому я копирую шрифты папки «C: \ xampp \ htdocs \ phantom \ web \ fonts» в веб-root «C: \ xampp \ htdocs». Это решает проблему.
Это не произойдет в рабочей среде, где ваш корневой сервер веб-сервера «C: \ xampp \ htdocs \ phantom \ web \». Я тестировал на рабочем сервере без необходимости вручную копировать папку шрифтов в webroot.
Кроме того, при выполнении той же команды в каталоге проекта «php app / console assetic: dump» вы получите ошибку, например «FileError: .. ../bootstrap/less/bootstrap.less» не найден. /bootstrap/less/bootstrap.less,C:\xampp\htdocs\phantom\vendor\mopa\bootstrap-bundle\Mopa\Bundle_BootstrapBundle\Resources\public\bootstrap "Той же начальной загрузкой был установлен" php app / консольные ресурсы: установите «in» C: \ xampp \ htdocs \ phantom \ web \ bootstrap ", что не соответствует директории webroot, чтобы снова решить эту же временную проблему в процессе разработки. Я просто скопирую каталог" C: \ xampp \ htdocs \ phantom \ web \ bootstrap "на" C: \ xampp \ htdocs \ bootstrap ", который решает проблему. Выполните команду снова, она будет компилироваться, чтобы css красиво и чисто.
Может быть, вы должны попытаться сохранить структуру папок Bootstrap без изменений (например, загружая ее с помощью беседки). Кстати, фильтр cssrewrite будет анализировать ваши файлы css, чтобы отобразить расположение шрифтов.