Liste der Anhänge anzeigen (Anzahl: 3)
Update per Formular statt Modul?
Moin,
ich möchte die tl_member updaten - per Formular.
Ich weiß, das dazu das Daten-ändern-Modul gedacht ist (Modultyp Personendaten), jedoch hätte ich gerne ein ansprechendes :pFormular - sprich die selects sollen als radiobuttons erscheinen und ich möchte abhängig von Feldinhalten andere Felder ausblenden, sprich, ich brauche die Funktionen des Formulargenerators. Außerdem möchte ich
einen Text zur Datenschutzerklärung am checkbox-Feld tl_member.privacy (selbst erweitert) anzeigen und Entsprechendes beim Lastschriftauftrag.
Mit Programmierung oder vielleicht mit der Erweiterung catalog-manager geht es sicherlich, nur habe ich schon MetaModels ausprobiert und bin da auch an Beschränkungen gescheitert bzw. war dieser Lösungsansatz zu verquer. Contao ist ja ein super System und bietet von Hause aus schon eine tolle Mitgliederverwaltung. Deshalb denke ich, sollte es auch mit "Bordmitteln" lösbar sein.
Anhang: Hardcopy meines Formulars.
Liste der Anhänge anzeigen (Anzahl: 1)
Also mein Stand ist jetzt dieser:
Offensichtlich ist der processFormData Hook der passende. Zonky, du hast mir ja auch dazu geraten.
Dass ich da leider nicht weitergemacht hatte, lag wohl an Mißverständissen...
Also jetzt weiter!
Die Methode wird nach dem Absenden des Mitgliedsantragsformulars gerufen. Schon mal gut:)
Frage: Wie bringe ich das gute Contao jetzt dazu, die Eingabedaten ($submittedData) in tl_member per update zu speichern?
Die ID des Mitglieds (Formabsender = zu änderndes Mitglied) befindet sich bereits in $submittedData.
PHP-Code:
<?php
// ../src/EventListener/ProcessFormDataListener.php
// Aufruf: nach Absenden des Mitgliedsantragsformulars, Die Eingabedaten sind vom Formular verifiziert und können gespeichert werden
// Funktionen:
//
// 01. Test: Aufruf der Methode (via Dump). ok
// 02. Auswahl der gewünschten Form: ok
// 03. Speicherung der Eingabedaten ($submittedData) in tl_mmember
namespace App\EventListener;
use Contao\CoreBundle\ServiceAnnotation\Hook;
use Contao\Form;
use Terminal42\ServiceAnnotationBundle\ServiceAnnotationInterface;
class processFormDataListener implements ServiceAnnotationInterface
{
/**
* @Hook("processFormData", priority=-10)
*/
public function onProcessFormData(array $submittedData, array $formData, ?array $files, array $labels, Form $form ): void
{
if (23 === (int) $form->id) {
// dump($submittedData, $form); die();
}
}
}
?>
Im Anhang habe ich eine Doku angefangen