2012-12-28 3 views
8

ich meine CSS mit dem folgenden Code enthalten:Symfony2 und Assetic - cssrewrite funktioniert perfekt für Entwickler, nicht für prod

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

In dev, dies ermöglicht es mir, Bild-Sprites ohne Probleme zu benutzen. Die daraus resultierende URL zu meinem Sprite:

http://localhost/diva/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

Hinweis der Mangel an Web-Verzeichnis:

http://localhost/diva/web/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg

Aber in prod, wird es zu kartiert.

Der generierte Code in der CSS-Datei ist so, wie er sein sollte, und alle meine CSS (sowohl die dev 'Chunks' und die finalisierte Prod Assitic Dump) sind bei web/css/. Irgendwelche Ideen, warum die Produktumgebung das Webverzeichnis überspringt?

EDIT: Was seltsam ist, dass sowohl Entwickler und prod erzeugen die gleiche URL in der CSS selbst:

url('../../bundles/majorproductionssewingdivasite/images/diva-sprites.jpg')

Antwort

20

Lösung ist, die Vermögenswerte in der prod Umgebung dump:

$ app/console assetic:dump --env=prod 
+7

Dies ist die richtige Antwort. Aber möglicherweise müssen Sie den Cache auch zuerst löschen 'php app/console cache: clear --env = prod'. Das Dump der Asset-Dateien vor der Bereinigung des Caches hat das Problem für mich nicht gelöst. Ich bin ein wenig neu in Symfony2, aber von dem, was ich gerade erlebt habe, scheint es, die Asset-Dateien aus dem Cache zu entladen, nicht aus den physischen Dateien. – cartbeforehorse

+0

OMG wie kann ich das vermissen @ _ @ – GusDeCooL

0

Im Debug-Modus scheint Assetic 1.1 auch CSS neu zu schreiben, auch wenn es nicht im {% stylesheets%} - Tag ist. Es lohnt sich also, dies zu überprüfen, wenn Sie das Debugging in der Produktion deaktivieren.

9

Denken Sie daran, Cache leeren

php app/console cache:clear --env=prod --no-debug 

berore

php app/console assetic:dump --env=prod --no-debug 
1

auch zu entsprechenden configure assetic erinnern, in Ihrem config_prod.yml wie unten beschrieben:

assetic: 
    use_controller: false 

Bearbeiten

: Wie gesagt in Symfony docs (tatsächlich in Kapitel bezieht Umgebung dev): Symfony sagen, aufhören zu versuchen, diese Dateien zu verarbeiten dynamisch

+0

Bitte fügen Sie einige zusätzliche Details, um Ihre Antwort zu vervollständigen – amonk

+0

Sie haben Recht, aber die übliche Konfiguration ist bereits 'use_controller: '% kernel.debug%'' – Arno