Übersicht
Was ist ein Response Generator?
Ein Response Generator wandelt den aktuellen Shopware-Warenkorb in das protokollspezifische Datenformat um, das ans Procurement-System zurückgesendet wird. Er ist das Bindeglied zwischen dem Shopware-Datensystem (DataFields) und der eigentlichen Übertragung.
| Generator | Klasse | Protokoll |
|---|---|---|
OciConnectorResponseGenerator | AgiqonConnector\Connector\System\OCI\Service | OCI (HTML-Formular) |
CxmlConnectorResponseGenerator | AgiqonConnector\Connector\System\Cxml\Service | cXML (XML-Dokument) |
Wann wird er aufgerufen?
| Zeitpunkt | OCI | cXML |
|---|---|---|
| Warenkorb-Seite rendern | buildForm() baut die OCI-Formulardaten auf (Vorschau + Submit-Button) | generateCxmlPunchOutOrderMessage() generiert den PunchOutOrderMessage-Body |
| Login-Response | — | generatePunchoutSetupResponse() gibt die StartPage-URL zurück |
Gemeinsame Konzepte
Fallback-Kette
Für jedes konfigurierte Feld wird der Wert nach folgendem Schema ermittelt:
Primary DataField
→ Fallback DataField 1
→ Fallback DataField 2
→ Fallback DataField 3
→ Static Value (hardcodierter Wert)
→ leer ("")
Sobald ein Slot einen nicht-leeren Wert liefert, werden die weiteren Fallbacks nicht mehr geprüft.
Automatische Bereinigung
Alle aufgelösten Werte werden automatisch bereinigt:
- HTML-Tags werden entfernt (
strip_tags) - Whitespace wird am Anfang und Ende abgeschnitten (
trim)
LineItemContextResolver
Für jede Warenkorbposition durchsucht der Generator alle registrierten LineItemContextResolver nach dem ersten, dessen supports()-Methode true zurückgibt. Dieser baut den DataFieldResolutionContext auf. Findet sich kein passender Resolver, wird die Position übersprungen.
→ Mehr dazu: LineItemContextResolver