Pfade für CSS-Assets in Symfony 2
Problem:
In einem Symfony 2-Projekt , Sie haben eine CSS-Datei mit Verweisen auf Bilder und Schriftarten (z. B. url(..)). Sie möchten diese Dateien im CSS referenzieren, ohne die Originale direkt im öffentlichen Verzeichnis verfügbar zu machen.
Mögliche Lösungen:
Lösung 1: Absolute Pfade
Das Ändern aller Pfade im CSS in absolute Pfade ist keine geeignete Lösung, da auf die Anwendung möglicherweise nicht immer zugegriffen werden kann dasselbe Unterverzeichnis.
Lösung 2: Assetic mit dem Filter „cssrewrite“
Die Verwendung von Assetic mit dem Filter „cssrewrite“ kann beim Umschreiben von Pfaden helfen, führt jedoch häufig zu falschen Pfaden Generation.
Lösung 3: Relativ Pfade
Das Ändern aller Pfade im CSS so, dass sie relativ zum Stylesheet-Speicherort sind, funktioniert außer in der Entwicklungsumgebung, wo der CSS-Pfad „/app_dev.php“ enthält und zu einer „NotFoundHttpException“ für das Bild führt Pfade.
Arbeitslösung:
Die einzige funktionierende Lösung ist Platzieren Sie die ursprünglichen CSS-Dateien in einem privaten Verzeichnis (z. B. „Resources/assets/css“) und kompilieren Sie sie mit Assetic in ein öffentliches Verzeichnis (z. B. „web/css“).
Codestruktur :
... +-src/ | +-MyCompany/ | +-MyBundle/ | +-Resources/ | +-assets/ | +-css/ | +-stylesheets... +-web/ | +-css/ | +-stylexyz.css | +-images/ | +-images... ...
Assetischer Zweig Code:
{% stylesheets '@MyCompanyMyBundle/Resources/assets/css/*.css' filter="cssrewrite" %} <link rel="stylesheet" href="{{ asset_url }}" /> {% endstylesheets %}
Kompilierungsprozess:
Dieser Prozess stellt sicher, dass die CSS-Dateien mit den richtigen Bildpfaden im öffentlichen Verzeichnis kompiliert werden:
Vorteile:
Das obige ist der detaillierte Inhalt vonWie verwaltet man CSS-Asset-Pfade in Symfony 2 für eine sichere und effiziente Bereitstellung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!