0

The answer provided by "Symfony 2 set background image using CSS" doesn't work in Symfony 3 any more. So I ask the very same question for the next version:

I want to put a background image from CSS, how can I do that?

What I tried:

/* src/SiteBundle/Resources/public/css/style.css */
#element {
  background: url('../images/image.jpg');
}

With an image located at src/SiteBundle/Resources/public/images/image.jpg.

Assets are correctly installed with console asset:install --symlink, all green to go.

Assetic is manually installed with composer.

CSS is loaded with:

<!-- app/Resources/views/base.html.twig -->
{% stylesheets '@SiteBundle/Resources/public/css/*.css' filter='cssrewrite' %}
  <link rel="stylesheet" href="{{ asset_url }}" type="text/css">
{% endstylesheets %}

What I got:

When I look at my browser inspector, it tells me that the css property is

background: url('../../Resources/public/images/image.jpg')

which is obviously not working.

What I tried to fix it:

I tried changing the CSS background property to url('images/image.jpg'), knowing it wouldn't work but to figure out how it handles the links.

The browser inspector told me the link was now url('../../Resources/public/css/images/image.jpg'), telling me there is no way I can change the ../../Resources/public/ part.

How am I supposed to to it correctly?

Bonus question you should ask yourself before answering: will your answer work when I switch from dev to prod?

1 Answer 1

1

When using the cssrewrite filter, don't refer to your CSS files using the @AppBundle syntax. http://symfony.com/doc/current/cookbook/assetic/asset_management.html#fixing-css-paths-with-the-cssrewrite-filter

also:

Best Practice:

Store your assets in the web/ directory.

So you probably should use:

{% stylesheets 'bundles/site/css/*.css' filter='cssrewrite' %}
    <link rel="stylesheet" href="{{ asset_url }}" type="text/css">
{% endstylesheets %}

Is this work for both prod and dev? I really don't know since i'm using gulp to manage assets.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, I just found exactly the same answer, I tried it a few seconds before reading your answer and it works! ;-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.