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