我已经阅读了很多有关此内容的帖子,但无法让这项内容适用于我的项目。
所以基本上我有一个包含twitter bootstrap(v3)的Symfony2项目。在开发模式下,每件事都运行正常,但是当我在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
这是正常原因我在Symfony /
中没有css /文件夹以下是项目的结构:
app/
src/
vendor/
web/
css/
compiled/
fonts/
js/
twig file:
{% 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)。
如果我们查看路径它不应该在开发模式或prod模式下工作,因为路径将字体/文件放在web目录之外。然而,它在开发模式下工作。
有关如何解决这个问题的想法吗?
我会很高兴。
答案 0 :(得分:12)
如果您使用“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
应该将文件导出到web文件夹中的fonts-directory。
希望这有帮助!
答案 1 :(得分:0)
您不必在Symfony/
路径下搜索它们,因此Symfony2 webfolder为web/
,因此url与web/
文件夹“相对”。
顺便说一下,你必须使用以下命令
php app/console assets:install
如果您想要符号链接,还可以在命令中添加--symlink
参数
assets:install
会将所需资源符号链接或复制到“公共网络文件夹”
assetic:dump
只会将所有j合并为一个
答案 2 :(得分:0)
正确的解决方案:
安装Nodejs,设置symfony2配置文件,它会自动将您选择的cssrewrite过滤器编译成CSS。这将解决这些错误。
我的config.yml和config_dev.yml看起来只是一个资产部分 - 要非常小心路径语法,否则你会收到此错误“运行时出错:...错误:无法找到模块'less'“有很多人遇到这3条错误消息谷歌这个字符串找出”运行时发生错误:错误:找不到模块'少'“
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开发Web服务器设置如下:web根目录是“C:\ xampp \ htdocs \”,项目就像这样“C:\ xampp \ htdocs \ phantom \”和资产:dump放置glyphicons -halflings-regular.ttf,glyphicons-halflings-regular.woff,以及“C:\ xampp \ htdocs \ phantom \ web \ fonts”中的glyphicons-halflings-regular.woff2但是,当加载页面时,它会查找“{{ 3}}“你可以看到这是我的开发设置的问题。所以我将文件夹字体“C:\ xampp \ htdocs \ phantom \ web \ fonts”复制到web根目录“C:\ xampp \ htdocs \”这就解决了这个问题。
在服务器Web根目录为“C:\ xampp \ htdocs \ phantom \ web \”的生产环境中不会发生这种情况。我在生产服务器上进行了测试,无需手动将fonts文件夹复制到webroot。
此外,当您在项目目录“php app / console assetic:dump”中运行相同的命令时,您将收到类似“FileError:'.. / bootstrap / without / bootstrap.less'之类的错误发现。试过 - ../bootstrap/less/bootstrap.less,C:\xampp\htdocs\phantom\vendor\mopa\bootstrap-bundle\Mopa\Bundle\BootstrapBundle\Resources\public\bootstrap“同样的标记引导程序是通过“C:\ xampp \ htdocs \ phantom \ web \ bootstrap”中的“php app / console assets:install”安装,这是不正确的webroot目录,所以再次解决开发中的这个临时问题我将只复制目录“C: \ xampp \ htdocs \ phantom \ web \ bootstrap“to”C:\ xampp \ htdocs \ bootstrap“解决了问题。再次运行你的命令它会很好地干净地编译成css。
答案 3 :(得分:-1)
可能你应该尝试保持Bootstrap文件夹结构不变(例如用凉亭下载它)。顺便说一句,cssrewrite过滤器将解析您的css文件以反映字体的位置。