Hallo Heinz,
Falls du das jetzt schon nutzen willst.
Die Code-Anpasungen wird so aussehen:
Es gibt im Verzeichnis components/com_visforms/lib/field für jeden Feldtyp eine Datei.
In allen diesen Dateien wird das Event onVisfieldBeforeCreate getriggered (AUßER image.php, multicheckbox.php, multicheckboxsql.php, password.php, reset.php, die rein abgeleitete Klassen sind und keinen eigenen Code enthalten).
So um die Zeile 43 (variiert je nach Datei).
Alt:
Code:
$event = AbstractEvent::create('onVisfieldBeforeCreate', array('context' => 'com_visforms.field', 'subject' => $this->field));
Neu:
Code:
$event = AbstractEvent::create('onVisfieldBeforeCreate', array('context' => 'com_visforms.field', 'subject' => $this->field, 'form' => $this->form));
Dieser Code muss in 19 Dateien in diesem Verzeichnis anpassen (eben allen außer image.php, multicheckbox.php, multicheckboxsql.php, password.php, reset.php).
Wenn du Dateien vergisst erhälst du Fehlermeldungen und evtl. auch fatal Errors!
Nachdem alle Dateien angepasst sind steht dir in deinem EventHandler im Plugin ein 3 Parameter $form zur Verfügung.
Das $form Objekt hat einen Parameter displayState. Der kennt 4 Werte.
1 = Formularansicht
2 = Fehlerhaftes Formular wird erneut angezeigt (also auch eine Formularansicht, aber es gibt schon Benutzereingaben und diese werden eingefügt. Dieser Status wird also durchlaufen, wenn das Formular abgeschickt wurde, aber PHP Validierung hat einen Fehler erkannt hat und das Formular erneut angezeigt wird)
3 = Formular Edit Ansicht
4 = Fehlerhaftes Edit Formular wird erneut angezeigt (analog 2, aber beim Edit Modus).
Damit solltest du alle benötigten Informationen haben.
Herzliche Grüße,
Aicha