AssetsExtraBundle
Erweitert die Konfiguration der internen Symfony 2 Assets-Verwaltung, um Bundlenamen im Dateipfad zu verschlĂŒsseln oder auch den Assets-Ordner von "bundles" auf einen anderen umzustellen. Beinhaltet Erweiterungen der Twig asset()-Funktion, des Assetic LessPHP-Compilers und CssRewrite-Filters, welche das Verweisen mit Logical File Names erlauben sowie einen Assetic CssRewrite-Filter-Bug Fix., (*1)
Installation
Befolge folgende Schritte, um das Bundle in deiner Symfony-Umgebung zu installieren., (*2)
1. Schritt
FĂŒge die folgende Zeile zu deiner composer.json
hinzu:, (*3)
"require" : {
// ...
"checkdomain/assets-extra-bundle": "dev-master",
}
2. Schritt
FĂŒhre ein composer update
aus, um die Pakete neu zu laden., (*4)
3. Schritt
Registriere das Bundle mit folgender Codezeile:, (*5)
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Checkdomain\AssetsExtraBundle\CheckdomainAssetsExtraBundle(),
);
// ...
}
4. Schritt
Wenn du LessPHP nutzen möchtest, aktiviere die Erweiterung wie gewohnt in deiner Konfiguration. Eine Anleitung dazu findest du zum Beispiel auf howto24.net., (*6)
Wir empfehlen das aktivieren des CssRewrite-Filters von Assetic auf alle Dateiendungen, wie:, (*7)
- *.css
- *.less
- *.sass
- und *.scss
Bearbeite deine Konfiguration dazu einfach wie folgt:, (*8)
assetic:
filters:
cssrewrite:
apply_to: '\.(css|less|sass|scss)$'
Konfiguration
Folgende Konfigurationen stehen dir zur VerfĂŒgung, (*9)
checkdomain_assets_extra:
write_to: web
encrypt_bundle: false
assets_path: bundles
-
write_to
ist bekannt aus dem AsseticBundle. Du kannst angeben, in welchen Ordner die Assets beim AusfĂŒhren von app/console assetic:install
standardmĂ€Ăig geschrieben werden sollen., (*10)
-
encrypt_bundle
verschleiert, wenn aktiviert, den Bundle-Namen im Asset-Pfad. Aus bundles/acmedemo/test.jpg
wird zum Beispiel bundles/e0b6011f/test.jpg
, (*11)
-
assets_path
gibt das Verzeichnis fĂŒr Assets an. Als Standard ist bei Symfony der Wert bundles
gesetzt, aber vielleicht findet ja der ein oder andere zum Beispiel assets
schöner., (*12)
Anwendung
Im folgenden werden die verschiedenen Anwendungsbereiche kurz erklÀrt. In den Beispielen nutzen wir folgende Konfiguration., (*13)
checkdomain_assets_extra:
encrypt_bundle: true
assets_path: assets
Assets installieren
Mit dem Konsolen-Kommando assets:install
lassen sich alle Assets entsprechend der Konfiguration installieren. Weitere Informationen liefert der Befehl assets:install --help
., (*14)
Twig asset()-Funktion
Die Twig-Funktion funktioniert wie gewohnt. ZusÀtzlich ist der Gebrauch von Logical File Names möglich., (*15)
test.html.twig, (*16)
{{ asset('bundles/acmedemo/test.jpg') }}
{{ asset('@AcmeDemoBundle/test.jpg') }}
Ergebnis, (*17)
/assets/e0b6011f/test.jpg
/assets/e0b6011f/test.jpg
Css-Rewrite-Filter
Ohne dieses Bundle funktioniert dieser Filter nur, wenn keine Logical File Names in der Twig-Extension fĂŒr Assetic genutzt werden. Dieses Problem ist gelöst und zudem sind auch Logical File Names in den CSS-Dateien selbst möglich., (*18)
/src/Acme/DemoBundle/Resources/public/css/test.css, (*19)
// Zeigt auf: /src/Checkdomain/TwitterBootstrapBundle/Resources/public/css/bootstrap.css
@import url(@CheckdomainTwitterBootstrapBundle/css/bootstrap.css);
.logo {
// Zeigt auf: /src/Acme/DemoBundle/Resources/public/img/logo.jpg
background-image: url(../img/logo.jpg);
}
Ergebnis, (*20)
@import url(/assets/19e3eda3/css/bootstrap.css);
.logo {
background-image: url(/assets/19e3eda3/img/logo.jpg);
}
LessPHP-Compiler
Interessant sind hier Imports aus verschiedenen Bundles, welche ohne dieses Bundle nur durch mĂŒhselige Angabe des kompletten Verzeichnispfades möglich wĂ€ren. Wir nutzen einfach Logical File Names. In diesem Beispiel nutzen wir das TwitterBootstrapBundle., (*21)
/src/Acme/DemoBundle/Resources/public/css/test.css, (*22)
// Zeigt auf: /src/Checkdomain/TwitterBootstrapBundle/Resources/private/less/bootstrap.less
@import url(@CheckdomainTwitterBootstrapBundle/Resources/private/less/bootstrap.less);
Achtung: Da die Less-Dateien nicht zwangslÀufig im public
-Ordner liegen mĂŒssen, ist hier die Angabe des kompletten Pfades nötig, wĂ€hrend in den anderen Beispielen der Pfad Resources/public/
komplett weggelassen werden muss und automatisch von diesem Ordner ausgegangen wird, da nur dieser bei einem assets:install
kopiert wird., (*23)