Markus Michalski FAQ

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.

English Version

Zurück zur Übersicht

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