SmartMaps Adress-Autocomplete: Technische Details
Technische Details des SmartMaps-Adress-Autocomplete-Plugins: Ablauf, Plugin-Struktur, Konfigurationsschlüssel, Twig-Blöcke, Storefront-JavaScript sowie fehlende Admin-, ACL- und Datenbank-Anteile.
Technische Details
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Eckdaten
| Eigenschaft | Wert |
|---|---|
| Composer-Paket | mmd/smart-maps-integration |
| Plugin-Klasse | Mmd\SmartMapsIntegration\MmdSmartMapsIntegration |
Plugin-Name für bin/console |
MmdSmartMapsIntegration |
| Namespace | Mmd\SmartMapsIntegration |
| Anforderungen | PHP >= 8.2, shopware/core ~6.7.0 |
| Konfigurationsschlüssel | MmdSmartMapsIntegration.config.apiKey, .enabled, .countryFilter |
Ablauf
graph TD
A["Storefront-Seite wird gerendert"] --> B["StorefrontSubscriber"]
B --> C{"Route in der Liste?"}
C -->|"Nein"| D["Nichts tun"]
C -->|"Ja"| E["SmartMapsConfigService liest Systemkonfiguration"]
E --> F{"Aktiv und Schlüssel gültig?"}
F -->|"Nein"| D
F -->|"Ja"| G["Twig-Parameter setzen"]
G --> H["base.html.twig lädt CSS und JS von SmartMaps"]
G --> I["address-form.html.twig umhüllt das Formular"]
H --> J["Inline-Skript initialisiert Autocomplete"]
I --> J
graph LR
A["Kunde tippt"] --> B["SmartMaps-Bibliothek"]
B --> C["Vorschläge"]
C --> D["Kunde wählt"]
D --> E["Felder füllen"]
E --> F["input- und change-Events"]
Plugin-Struktur
| Datei | Aufgabe |
|---|---|
src/MmdSmartMapsIntegration.php |
Plugin-Klasse, ohne eigene Logik |
src/Subscriber/StorefrontSubscriber.php |
Hört auf StorefrontRenderEvent, filtert nach Route und setzt die Twig-Parameter |
src/Service/SmartMapsConfigService.php |
Liest die Einstellungen pro Sales Channel aus der Systemkonfiguration |
src/Struct/SmartMapsConfig.php |
Wertobjekt mit der Prüfung isConfigured() |
src/Resources/config/config.xml |
Admin-Konfiguration |
src/Resources/views/storefront/base.html.twig |
Lädt CSS und JS von SmartMaps und enthält das Initialisierungsskript |
src/Resources/views/storefront/component/address/address-form.html.twig |
Umhüllt das Adressformular mit den Data-Attributen |
src/Resources/app/storefront/src/main.js |
Registriert die JS-Klasse SmartMapsAutocomplete am Selektor [data-smartmaps-autocomplete] |
Twig-Parameter
| Parameter | Inhalt |
|---|---|
mmdSmartMapsConfig |
enabled (bool) und countryFilter (string) |
mmdSmartMapsApiKey |
der bereinigte API-Schlüssel |
Beide werden nur gesetzt, wenn die Route in der Liste steht und die Konfiguration gültig ist.
Initialisierung im Browser
Es gibt zwei Wege, das Autocomplete an ein Straßenfeld zu binden: das Inline-Skript in base.html.twig und die registrierte JS-Klasse SmartMapsAutocomplete. Das Inline-Skript prüft vor der Initialisierung das Attribut dataset.smartmapsInitialized am Straßenfeld und überspringt bereits initialisierte Felder, die JS-Klasse hat keine solche Prüfung.
Fehlerverhalten
Der Subscriber fängt jede Ausnahme ab und lässt sie unbemerkt, damit ein Fehler im Plugin die Storefront nie stört. Fehler im Browser landen in der Konsole, aus dem Inline-Skript mit dem Präfix [SmartMaps] und aus der JS-Klasse mit dem Präfix [SmartMapsAutocomplete].
Was das Plugin nicht mitbringt
- keine Admin-Oberfläche außer der Konfigurationskarte
- keine eigenen Routen oder API-Endpunkte
- keine Datenbank-Migrationen und Entities
- keine eigenen Snippets oder Übersetzungsdateien (die Texte der Konfiguration stehen in der
config.xml) - keine ACL-Privilegien, die Konfiguration unterliegt den üblichen Rechten für Systemeinstellungen
- keine Konsolenbefehle und keine Erweiterungspunkte für andere Plugins