在symfony2中,css中的背景图像在开发环境中工作得很好,但在prod环境中却不行
这是一个CSS
background-image: url("../../bundles/acmeweb/images/logo-big.png");
在开发(dev)环境中,background-image工作正常,因为生产(prod)环境,图像不会到来。
我需要在图片网址之间添加带有“网络”的网址,以便在生产中工作,例如
background-image: url("../../web/bundles/acmeweb/images/logo-big.png");
图片位于MyBundle/Resources/public/images
如何纠正这个问题?
答案 0 :(得分:2)
Symfony2有关于您问题的完整文档。请仔细阅读:) http://symfony.com/doc/current/book/templating.html#linking-to-assets
所有图片和样式来源都应位于捆绑文件夹中:
src/MyBundle/Resources/public/css
src/MyBundle/Resources/public/images
但是只能从外部访问web
文件夹,因此执行命令时
app/console assets:install web --symlink
它会在 web 文件夹中创建指向您文件的链接:
web/bundles/acmeweb/css
web/bundles/acmeweb/images
所以在CSS中你应该总是定义相对路径。在你的情况下,它将是:
background-image: url("../images/logo-big.png");
在树枝上你应该用asset()
函数来链接你的风格:
<link href="{{ asset('bundles/acmeweb/css/yourstylesheet.css') }}" rel="stylesheet" type="text/css" />
就是这样
再次,仔细阅读文档 - 它包含所有这些基本内容;)
答案 1 :(得分:0)
您正在使用相对路径来获取图像,这可能会导致一些问题。而不是尝试绝对路径。
e.g。 path =到达logo-big.png的绝对路径 这是CSS background-image:url(“path”);
答案 2 :(得分:0)
将路径更改为:
background-image: url("/bundles/acmeweb/images/logo-big.png");
您可能也希望清除缓存:
php app/console cache:clear --env=prod
答案 3 :(得分:0)
向来到这里的任何人说清楚
在
中定义您的文件mybundle /资源/公共/ CSS
mybundle /资源/公共/图片
等
在你的css中引用你的形象,例如
body {
background: url('../images/mypicture.jpg') no-repeat center center fixed;
}
你的twig文件中的
{% stylesheets 'bundles/mybundle/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
现在让它运行
php app/console cache:clear --env prod
php app/console cache:clear --env dev
php app/console assets:install
php app/console assetic:dump
现在是我的踢球者
php app/console assetic:dump --env prod
这让我起床并为我工作,希望它可以帮助某人