Ergebnis 1 bis 9 von 9

Thema: validateFormField-Hook oder: "Wie fange ich ein Formular ab?"

  1. #1
    Contao-Nutzer
    Registriert seit
    20.08.2014.
    Beiträge
    25

    Standard validateFormField-Hook oder: "Wie fange ich ein Formular ab?"

    Hallo Contao-Pros,

    ich möchte beim click des Submit-Buttons eines Formulars, vor dem versenden, den Inhalt eines bestimmten Feldes mit relativ komplexer Funktionalität verändern.
    Dazu schien mir der Hook "validateFormField" passend.
    Leider springt der Hook weder beim verändern von Feldern noch beim verschicken des Formulars an. Die Doku zum Hook hilft mir leider nicht weiter.
    Was übersehe ich hier?

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo bholiand,

    dafür sollte eigentlich der Hook "processFormData" sein. Es kann aber sein, dass die Daten vorher schon in der Mail rausgehen.
    Du könntest aber das Mailen abschalten und aus dem Hook selbst eine Mail generieren.

  3. #3
    Contao-Nutzer
    Registriert seit
    20.08.2014.
    Beiträge
    25

    Standard

    Vielen Dank für diesen Hinweis. Den genannten Hook habe ich übersehen.
    Damit werde ich es versuchen.
    Irritiert bin ich von dem Hinweis, dass die Daten per Mail rausgehen könnten. Das ist gar nicht meine Intention... Wie ist das gemeint?

  4. #4
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du kannst doch im Formular-Generator auswählen, dass die Formulardaten versendet werden.
    Wenn Du das aktiv hast, könnte es sein, dass die Mail vor dem Hook-Aufruf rausgeht. (ich konnte gerade nicht nachsehen).

  5. #5
    Contao-Nutzer
    Registriert seit
    20.08.2014.
    Beiträge
    25

    Standard

    OK, Danke.
    Das Formular ist nicht von mir erstellt, ich muss mich nur mit dem bearbeiten einiger Werte rumärgern ;-)
    Ich glaube (und hoffe), das die Daten nicht versendet werden - und falls doch, dass es keine Relevanz hat, ob das vorher oder nachher geschieht.
    Wie kann ich die Frage, ob ein Mail-Versand stattfindet klären?

  6. #6
    Contao-Nutzer
    Registriert seit
    20.08.2014.
    Beiträge
    25

    Standard

    Nach einem Test, musste ich feststellen, das der Hook auch nicht anspringt (Hooks im Allgemeinen zu benutzen funktioniert).
    Vielleicht etwas zum Kontext.
    Die besagte Form ist in foo.html5 gespeichert und liegt im root-Verzeichnis unter /templates/
    Der Inhalt sieht etwa so aus:

    Code:
    <form<?php if ($this->action): ?> action="<?php echo $this->action; ?>"<?php endif; ?> id="<?php echo $this->formId; ?>" method="post" enctype="<?php echo $this->enctype; ?>">
    	<div class="formbody">
    		...
    		// alle möglichen Elemente
    		...
    		<div class="submit_container">
    			<input type="submit" class="submit" value="Go!">
    		</div>
    	</div>
    </form>
    Weder der Speicherort (/templates/) noch der Inhalt der Datei foo.html5 sind von mir gewählt - und aus erst aufkeimenden Contao-Kenntnissen folgt, dass ich noch nicht beurteilen kann, ob das so richtig ist.
    Ist einer der erwähnten Hooks an dieser Stelle prinzipiell sinnvoll nutzbar? Also zum Zugriff auf Elemente des Formulars nach click auf das submit-Element?

    Ich bedanke mich herzlich für die Hilfe!

  7. #7
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo bholiand,

    so geht das natürlich nicht. Wenn man die Hooks aus Contao nutzen möchte, muss man auch die Randbedingungen aus Contao beachten.

    Das ganze funktioniert mit einem Content-Element "Formular" innerhalb der Seite. Dieses Formular wird von Contao über die entsprechenden Hooks aufgebaut, und wenn es ein POST-Formular ist, werden die abgesendeten Daten auch wieder über dieses Content-Element in der Seite kontrolliert und verarbeitet.

    Wenn Du jetzt ein Formular in einer Datei einbindest, z.B. mit dem InsertTag {{file::foo.html5}}, dann bekommt Contao von dem Inhalt nichts mit. Für Contao ist da gar kein Formular auf der Seite. Damit ist auch klar, dass die ganzen Verarbeitungen nicht greifen.

    Würdest Du dieses Formular im Formular-Generator erstellen oder nachbauen und in die Seite einbinden, dann hast Du alle Möglichkeiten der Hooks zur Verfügung.

  8. #8
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    alternativ, auch wenn es für einen Anfänger vielleicht "schwere Kost" ist, würde ich dir in jedem Fall "Haste" empfehlen:
    https://github.com/codefog/contao-ha...s/Form/Form.md

    Damit kannst du deine Formulare im Modul zusammenbauen und direkt ins Template rendern lassen. Und dann bist du auch nicht mehr auf den Contaointernen Hook angewiesen.

    Installier dir einfach Haste über den Composer-Client und schau dir die o.g. Dokumentation an. Du hast es ja anscheinend geschafft Werte ans Template weiterzugeben. Also sollte der Sprung zum eigenen Formular inkl. anschließender Validierung auch kein größeres Problem sein.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  9. #9
    Alter Contao-Hase
    Registriert seit
    02.10.2010.
    Ort
    58636 Iserlohn
    Beiträge
    1.084

    Standard

    Wie hast du den Hook denn eingebunden?

    Config-Eintrag?
    Klasse geschrieben (Datei- = Klassenname)?
    Autoload-Creator benutzt?
    Meine Extensions: contentmodify, dca_editor

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •