Zum Hauptinhalt springen

Wie passe ich die Konfiguration vor dem Speichervorgang an?

Beim Speichern wird eine Konfiguration über die API an das Backend gesendet. Sie wird dort gespeichert und zum Beispiel für das Drucken von PDFs, das Versenden von Mails oder die Ablage im Warenkorb eines Shops verwendet.

Daher sollte die Struktur einer Konfiguration nicht verändert werden. In manchen Situationen möchte man aber zum Beispiel Zusatzinformationen speichern. Im folgenden Beispiel wird eine zusätzliche Datenstruktur in die Konfiguration gelegt, um sie im PDF ausgeben zu können. Das ist sinnvoll, wenn die Daten in der Erweiterung bereits zur Verfügung stehen. Sie sollten dann nicht im Backend neu berechnet werden müssen, zumal das für das PDF verwendete twig eine Templat-Sprache ist und keine Logik ausführen sollte.

Ändern der Konfiguration vor dem Speichern

import { addCallbacks } from "@k3/core";

const additionalData = {
bemerkung: "Das ist eine Bemerkung.",
};

addCallbacks({
saveConfiguration: (cfg) => {
return {
...cfg,
json: {
...cfg.json,
additional: additionalData,
},
};
},
});

Mit der Funktion addCallbacks können Callbacks registriert werden.

Der Callback saveConfiguration wird aufgerufen, bevor eine Konfiguration gespeichert wird. Er erhält die Konfiguration übergeben. Sein Ergebnis wird dann gespeichert. Vergessen Sie also nicht, eine Konfiguration zurückzugeben!

Im Beispiel erhält die Struktur json ein weiteres Feld additional. json enthält die eigentlichen Inhalte der Konfiguration, ist also zur Aufnahme von Zusatzdaten prädestiniert.

Nutzung der geänderten Konfiguration im PDF

Die zusätzlich gespeicherten Daten können in einem PDF-Templat folgendermassen verwendet werden:

<p>
Bemerkung: {{ cfg.json.additional.bemerkung }}
</p>

Im PDF würde damit der Text "Das ist eine Bemerkung." ausgegeben werden.