Custom-Plugin Event-System

Plugin-Entwicklung mit Visforms Custom-Plugin Events

Individuelle Business-Logik

In der Vergangenheit wurden immer wieder Feature-Wünsche an uns herangetragen, die der Notwendigkeit einer sehr individuellen Business-Logik entstammten. Beispiele hierfür sind individuelle Submit-Handler festlegen oder spezifische Aktionen auf den Formulardaten, die nach dem erfolgreichen Abschicken des Formulars ausgeführt werden sollen. Oder der sofortige Export der Daten in eine kontinuierlich fortgeschriebene serverseitige Text-Datei, um Dritt-Systeme anzuschließen. Solche individuellen Features direkt in den Core von Visforms zu implementieren macht aber leider keinen Sinn.

Umfangreiches Event-System

Mit Visforms Version 3.2.0 haben wir ein umfangreiches Event-System eingeführt, das alle wichtigen Prozess-Schritte in der Formular-Lebensdauer sowie der Datenbearbeitung begleitet. Dadurch ist es seitdem möglich, den Visforms Core um beliebige eigene Plugins zu erweitern, die solche individuellen Feature implementieren können. Ein weiterer Vorteil ist, dass diese individuell entwickelten Plugins von Updates des Visforms Core nicht überschrieben werden.

Hinweis: Sollten Sie ein solches individuelles Feature benötigen, sind aber selbst nicht in der Lage es umzusetzen, denn entwickeln wir gerne ein individuelles Visforms Custom-Plugin für Sie. Wir erstellen Ihnen gerne ein Angebot. Lassen Sie uns einfach eine Beschreibung der gewünschten Funktionalität zukommen.

Event-Liste

onVisformsBeforeHtmlPrepare

Der HTML-Code, der ein komplettes Formularfeld mit allen Formatierungen darstellt, wird vollständig im Visforms Code erzeugt. Er wird als ein finaler fertiger HTML-String an die Formular-View übergeben. Der genaue Aufbau des HTML-Codes hängt ab

  • von dem Feldtyp,
  • von den in der Felddefinition gesetzten Parametern und
  • vom gewählten Formularlayout.

Das onVisformsBeforeHtmlPrepare Event kann dazu verwendet werden, um Feldparameter zu ändern, unmittelbar bevor mit der Erstellung des finalen HTML-Codes begonnen wird.

Parameter:

  • String $context: com_visforms.field
  • Objekt $field: Referenz auf das field Objekt
  • String $layout: visforms, btdefault, bthorizontal oder multicolumn

onVisformsAfterHtmlPrepare

Das onVisformsAfterHtmlPrepare Event wird getriggert, nachdem der HTML-Code generiert wurde und bevor dieser an die Formular-View übergeben wird. Es kann verwendet werden, um den finalen fertigen HTML-String nachzubearbeiten.

Parameter:

  • String $context: com_visforms.field
  • Objekt $field: Referenz auf das field Objekt
  • String $html: Referenz auf den HTML-String
  • String $layout: visforms, btdefault, bthorizontal oder multicolumn

onVisformsAfterCustomtextPrepare

Das onVisformsAfterCustomtextPrepare Event wird getriggert, nachdem der HTML-Code für den “benutzerdefinierten Text” generiert wurde. Es kann verwendet werden, um den finalen fertigen HTML-String nachzubearbeiten.

Parameter:

  • String $context: com_visforms.field
  • String $html: Referenz auf den HTML-String
  • String $layout: visforms, btdefault, bthorizontal oder multicolumn

onVisformsFormPrepare

Das onVisformsFormPrepare Event wird in der Formular View getriggert, direkt bevor die finale Erzeugung des HTMLs des Formulars gestartet wird. Diese finale Erzeugung des HTMLs des Formulars erfolgt mithilfe der sogenannten Layouts und deren Layout-spezifischen Dateien, die einem Überschreibe-Mechanismus unterliegen, den sogenannten ‘Overrides’.

Das Event kann unter anderem dazu verwendet werden, individuellen JavaScript Code in das Formular einzufügen. Es können zu diesem Zeitpunkt auch die Formularparameter verändern werden, um das Layout des Formulars anzupassen.

Parameter:

  • String $context:
    • com_visforms.form: Formular wird über ein Menü angezeigt
    • mod_visforms.form: Formular wird durch ein Modul angezeigt
    • plg_vfformview.form: Formular wird durch Content Plugin - Visforms Form View angezeigt
  • Objekt $visforms: Referenz auf das Form-Objekt
  • Objekt $menu_params: Referenz auf die Menüparameter.
    Der Parameter enthält alle administrativen Einstellungen des Menüs, mit dem das Formular aufgerufen wurde.

onVisformsEditFormPrepare

Das onVisformsEditFormPrepare Event wird in der Formular Edit View getriggert, bevor das Formular endgültig zur Anzeige gebracht wird. Es kann unter anderem dazu verwendet werden, individuellen JavaScript Code in das Formular einzufügen. Es können zu diesem Zeitpunkt auch die Formularparameter verändern werden, um das Layout des Formulars anzupassen.

Parameter:

  • String $context: com_visforms.form
  • Objekt $visforms: Referenz auf das-Form Objekt
  • Objekt $menu_params: Referenz auf die Menüparameter.
    Der Parameter enthält alle administrativen Einstellungen des Menüs, mit dem das Formular aufgerufen wurde.

onVisformsBeforeFormSave

Das onVisformsBeforeFormSave Event wird ausgelöst, bevor die übermittelten Formulardaten in der Datenbank gespeichert werden.

Parameter:

  • String $context: com_visforms.form
  • Objekt $visforms: Referenz auf das-Form Objekt
  • Array $fields: Referenz auf die Felde-Objekte

Implementation Details

Das Event onVisformsBeforeFormSave wird vom VisformsController aus getriggert, nachdem das Formular abgeschickt wurde.

Nach dem Absenden des Formulars ganz am Ende erfolgt immer noch ein Redirect. Der Redirect erfolgt auf die Erfolgsseite, die Startseite oder zurück zum Formular. Das genaue Ziel hängt davon ab, was im Formular auf dem Reiter “Ergebnis” konfiguriert wurde. Ein Test innerhalb der eigenen Entwicklung, welcher einfach einen Debug-Text der mit der PHP “echo” Funktion ausgibt, erreicht daher niemals die Oberfläche.

Es ist also mit PHP “echo” Funktion bei diesem Event an dieser Stelle nicht möglich zu testen, ob das Event grundsätzlich getriggert wird.

Es muss hier als Alternative die Joomla Message-Queue eingesetzt werden:

$app->enqueueMessage('Nachricht');

onVisformsAfterFormSave

Das onVisformsAfterFormSave Event wird ausgelöst, nachdem die übermittelten Formulardaten gespeichert wurden.

Parameter:

  • String $context: com_visforms.form
  • Objekt $visforms: Referenz auf das Form-Objekt
  • Array $fields: Referenz auf die Feld-Objekte

onVisformsEmailPrepare

Das onVisformsEmailPrepare Event wird zweimal mit unterschiedlichem Kontext ausgelöst:

  • bevor die Ergebnismail verschickt wird und
  • bevor die E-Mail an den Benutzer verschickt wird.

Das Event kann genutzt werden, um individuellen Code ablaufen zu lassen, der die E-Mail verändert oder um eine Datei an die E-Mail anzuhängen.

Parameter:

  • String $context: com_visforms.form.receiptmail oder com_visforms.form.resultmail
  • Objekt $mail: Referenz auf das Mailer Objekt
  • Objekt $visforms: Referenz auf das Form-Objekt

onVisformsBeforeSuccessAction

Das onVisformsBeforeSuccessAction Event wird zweimal mit unterschiedlichem Kontext ausgelöst, direkt bevor der Redirect Aktion erfolgt.

Parameter:

  • String $context: com_visforms.form
  • Objekt $visforms: Referenz auf das Form Objekt
  • Array $fields: Referenz auf die Feld-Objekte

onVisfieldBeforeCreate

Das onVisfieldBeforeCreate Event wird für jedes Feld im Formular ausgelöst, unmittelbar nachdem die Feld-Konfiguration geladen wurde. Alle Konfigurationswerte des $field Objekts können hier früh modifiziert werden, noch bevor sie durch den Visforms Code selbst ausgewertet werden. Änderungen an der Feld-Konfiguration in diesem Event-Handler zeigen also immer ihre gewünschte Wirkung.

Parameter:

  • String $context: com_visforms.field
  • Array $field: Referenz auf das Feld-Objekt