Formulare einbetten

Zuletzt geändert am:

Dieser Artikel beschreibt, wie Sie Formcentric-Formulare in Ihre Website einbetten.

Installation

Installieren Sie zunächst den Formcentric-Client in Ihrem Projekt:


Wenn Sie Theme-Assets lokal bundeln möchten, können Sie zusätzlich die mitgelieferten Dist-Dateien desselben Pakets verwenden.

SDK-Integration über mount()

Die Einbettung erfolgt über mount(element, config) aus @formcentric/client.

Ein einfaches Beispiel:


Dasselbe mit einem DOM-Element:


Browser-globale Defaults

Zusätzlich zur lokalen mount(element, config) Konfiguration kann das SDK browser-globale Defaults auswerten. Diese Defaults sind nicht Static-spezifisch, sondern werden auch von SDK-basierten Integrationen verwendet.

Mechanismus Beschreibung
configure({...}) aus @formcentric/client
Validiert die browser-globalen Defaults und ersetzt zuvor gesetzte Default-Werte.
direkte Mutation von window.formcentric
Setzt browser-globale Defaults direkt am Window-Objekt. Das funktioniert auch ohne vorherigen configure(...) Aufruf.


Dabei gilt:

Thema Verhalten
Priorität
Lokale mount() Konfiguration überschreibt browser-globale Defaults.
Objektwerte
requestHeaders, themeVariables und configuration werden zwischen globaler und lokaler Konfiguration zusammengeführt. Bei gleichen Schlüsseln gewinnt die lokale Konfiguration.
Snapshot-Verhalten
Browser-globale Defaults werden beim mount() Aufruf gelesen. Spätere Änderungen wirken nicht rückwirkend auf bereits gemountete Instanzen.
erneutes configure(...)
Ein weiterer Aufruf ersetzt die zuvor gesetzten browser-globalen Defaults, statt sie schrittweise zu erweitern.
Static-only
dynamicInit kann zwar browser-global gesetzt werden, wird aber vom SDK-Mount selbst nicht ausgewertet.


Die vollständige Liste der gemeinsamen browser-globalen Default-Keys und ihre fachliche Bedeutung stehen zentral in Client (Allgemein).

Nicht browser-global sind im SDK insbesondere embedId, formDefinition, vars, params, refs, formName, instanceId und conflictBehavior.


Beispiel:


Einbindung gebündelter oder lokaler Theme-Assets

Wenn Ihre Anwendung Theme-Assets selbst bundelt, importieren Sie diese vor dem Mounten und deaktivieren Sie das Runtime-Nachladen von Theme und Templates.

Beispiel mit Dist-Assets aus @formcentric/client:


Wenn Sie das Runtime-Laden verwenden möchten, konfigurieren Sie entweder themeDir und theme oder explizite URLs wie themeUrl, templateUrl und themeVariableUrl.

Rückgabewert und Lifecycle

mount() liefert eine FormInstance mit Lifecycle-Methoden und einem Ready-Promise zurück.

Beispiel:


Dabei gilt:

  1. ready wird nach erfolgreicher Initialisierung aufgelöst.
  2. reload() initialisiert das Formular im selben Container neu.
  3. stop() beendet die laufende Instanz, belässt das Zielelement jedoch im DOM.
  4. unmount() entfernt die Form und bereinigt die Instanz vollständig.

Für eine striktere Lifecycle-Sequenzierung in SPA-Code sollten reload(), stop() und unmount() jeweils awaited werden.

Reinitialisierung und Konfigurationsänderungen

Die SDK-Integration ist restart-basiert. Konfigurationswerte werden beim Initialisieren übernommen und nicht automatisch live in eine laufende Instanz übertragen.

Wenn sich Konfigurationswerte ändern, sollte die Einbettung explizit neu aufgebaut werden, zum Beispiel über await form.unmount() und anschließendes erneutes mount(), oder über await form.reload(), wenn Container und Identität bewusst gleich bleiben.

Dabei gilt:

  1. Änderungen an embedId oder formDefinition sollten in der Regel zu einem frischen Mount führen.
  2. Wenn bewusst mit Instanzübergaben gearbeitet wird, sollte embedId stabil bleiben und conflictBehavior: 'stop-existing' gesetzt werden.
  3. Für andere Konfigurationsänderungen sollte kontrolliert neu gemountet werden, statt Live-Updates zu erwarten.

Ereignisse und Fehlerbehandlung

Für einfache Integrationsfälle können optionale Callbacks direkt in der Konfiguration übergeben werden:

  1. onReady: wird nach erfolgreicher Initialisierung aufgerufen
  2. onError: wird bei Initialisierungs- oder Laufzeitfehlern aufgerufen

Beispiel:


onReady signalisiert, dass die Initialisierung erfolgreich abgeschlossen wurde. Es ist kein dediziertes Signal für einen ersten sichtbaren Render-Zeitpunkt.

Feedback