背景图像不与Symfony2中的prod env一起出现

时间:2012-07-11 07:54:24

标签: php symfony

在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

如何纠正这个问题?

4 个答案:

答案 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

这让我起床并为我工作,希望它可以帮助某人