Ergebnis 1 bis 17 von 17

Thema: Hook processFormData

  1. #1
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard Hook processFormData

    Hallo!

    In meiner aktuellen Erweiterung stehe ich vor dem Problem, den Hook processFormData zu integrieren.
    Leider hab ich im Forum keinen Hinweis gefunden, wie dieser Hook zu verwenden ist. Meine Versuche, über ein simples echo zu testen, ob der Hook aufgerufen wird, sind gescheitert. Der Hook outputFrontendTemplate hat hingegen auf Anhieb funktioniert.
    Hat jemand diesen Hook in einer Extension verwendet, damit ich mir die Möglichkeiten dieses Hooks ansehen kann?

    lg
    Markus

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

    Support Contao

    Standard

    Hallo Rastafanda,

    Beispiel:
    https://contao.org/board/message/74655.html

  3. #3
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Danke do_while,

    in der Zwischenzeit habe ich diesen Beitrag von markus.milkereit gefunden. Wenn der Hook allerdings vor dem Speichern aufgerufen wird, was passiert dann mit der ursprünglichen Speichermethode der Originalklasse?

    lg
    Markus

  4. #4
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Ich habe das Gefühl, dass mein Hook überhaupt nicht aufgerufen wird.

    Hier mal mein Code:
    PHP-Code:
    class Newsletter_personalize extends Backend {
        
        
        public function 
    processFormData($arrPosts,$arrForm,$arrFiles) {
            foreach(
    $arrPosts as $key=>$item) {
                echo 
    "<p>Key: " $key ", Item: " $item "</p>";
            }
        }
        
        public function 
    outputFrontendTemplate($strContent$strTemplate) {
            if(
    $strTemplate=='fe_main') {
                
    $strContent .= 'Testausgabe';
            }
            return 
    $strContent;
        }

    Wie schon vorher erwähnt, outputFrontendTemplate funktioniert einwandfrei, während processFormData scheinbar nicht ausgeführt wird.
    Habe auch schon versucht, einen Eintrag in die Datenbank zu schreiben, jedoch ohne Erfolg.

    Wo übersehe ich das entscheidende Detail?

    lg
    Markus

  5. #5
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Markus,
    ein Frontend-Formular wirst du ja abgeschickt haben . Hast du den Hook bzw. deine Klasse in deiner Config Datei korrekt registriert? Also:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('Newsletter_personalize''processFormData'); 

    cheers
    Antipitch

    PS: Im tatsächlichen Gebrauch sollte man übrigens in einer processFormData Funktion immer zunächst auf die ID des Formulars prüfen...

  6. #6
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Hallo Antipitch,

    klar hab ich richtig registriert

    PHP-Code:
    /**
     * Register hooks
     */
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('Newsletter_personalize''processFormData');
    $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('Newsletter_personalize''outputFrontendTemplate'); 
    Kann es sein, dass dieser Hook gar nicht ausgeführt werden kann?

    lg
    Markus

  7. #7
    Contao-Fan Avatar von tom
    Registriert seit
    16.06.2009.
    Ort
    Ludwigsburg
    Beiträge
    385

    Standard

    Hallo Markus,
    Zitat Zitat von Rastafanda Beitrag anzeigen
    Wenn der Hook allerdings vor dem Speichern aufgerufen wird, was passiert dann mit der ursprünglichen Speichermethode der Originalklasse?
    die per Hook 'processFormData' registrierten callback-Funktionen werden nicht vor dem Speichern aufgerufen. Es erfolgt zunächst der Mail-Versand (falls im Formulargenerator die Option "Per Mail versenden" aktivriert ist), anschliessend Speichern in der Datenbank (falls die Option aktiviert ist), erst dann werden die "processFormData"-Hooks/callbacks abgearbeitet, zuletzt erfolgt dann ggf. die Weiterleitung zur "Weiterleiten zu Seite".

    Wie schon vorher erwähnt, outputFrontendTemplate funktioniert einwandfrei, während processFormData scheinbar nicht ausgeführt wird.
    Habe auch schon versucht, einen Eintrag in die Datenbank zu schreiben, jedoch ohne Erfolg.
    Hast Du eine entsprechende Zeile entweder in system/modules/<Modulverzeichnis>/config.php oder in system/config/dcaconfig.php eingetragen?:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('Newsletter_personalize''processFormData'); 
    EDIT:
    oooops, das kommt davon, wenn man nebenher telefoniert und zulang für das Absenden braucht

    Schöne Grüße
    Thomas
    Geändert von tom (30.06.2009 um 13:31 Uhr)

  8. #8
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Markus,
    der Hook an sich funktioniert auf jeden Fall. Kann mich dunkel entsinnen, mal ein Problem mit $arrPost gehabt zu haben (was weiß ich aber nicht mehr genau). Versuch mal bitte mit ner einfachen Textausgabe zu prüfen bzw. $this->Input->post('feldname') zu speichern...


    cheers
    Antipitch

  9. #9
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Hallo Tom,

    danke für den chronologischen Ablauf innerhalb von TL, das hilft schon mal weiter.

    So, ich glaube, ich bin der Lösung etwas näher gerückt.

    Zielführend wäre es natürlich, die richtige Klasse zu erweitern
    In meinem Fall: ModuleSubscribe
    lg
    Markus

  10. #10
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Ich denke, das ich nun das richtige Modul erweitere, habe mich auch erfolgreich durch die angezeigte Fehlermeldung im Frontend gekämpft.
    Code:
    Recoverable error: Argument 1 passed to Module::__construct() must be an instance of Database_Result...
    Leider wurden meine Bemühungen nicht mit Erfolg gekrönt, mein Hook wird weiterhin erfolgreich ignoriert.

  11. #11
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Rastafanda,
    das bedeutet, es handelt sich um das Newsletter Bestellformular? Das wird wohl nichts werden. Der Hook ist in der Klasse frontend > Form implementiert. Die wird an der Stelle aber gar nicht zur Generierung des Formulars benutzt, wenn ich nicht irre. Es gibt leider auch keinen "createNewRecipient"-Hook oder sowas, müsstest du dann selbst in deine erweiterte Klasse schreiben...


    cheers
    Antipitch

  12. #12
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Hallo Antipitch,

    Schade! Ich hatte gehofft, da es sich um eine zum Core gehörende Erweiterung handelt, dass die Möglichkeit bestehen würde.

    lg
    Markus

  13. #13
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Rastafanda,
    es gibt schon ein entsprechendes Ticket. Ich habe Leo nochmal zusätzlich auf diesen Thread hingewiesen. Hoffe, du kannst dein Ziel bis zu einer evtl. Implementierung anderweitig lösen...


    cheers
    Antipitch

  14. #14
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Eine Hook-Funktion sollte nicht in einer Moduleklasse (als "extends Module") sein, denn das Modul "darf" nur mit Daten geladen werden. Du solltest dafür eine Helper-Klasse machen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  15. #15
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    @ Antipitch

    danke für deine Hilfe bez. Ticket.

    Ich denke, es ist an der Zeit, das Problem als Ganzes zu umschreiben, da es scheinbar nicht ganz klar ist, worum es gehen soll (sorry dafür).

    Ich möchte die Newsletterregistrierung so erweitern, dass man sich mit Anrede, Name und E-Mail Adresse registrieren kann und in weiterer Folge dann einen personalisierten Newsletter versenden kann. Ich dachte, der progressFormData Hook wird immer aufgerufen, wenn ein Formular abgeschickt wird, was für mein aktuelles Problem passend gewesen wäre, so dass ich die zusätzlichen Daten nachträglich in die Tabelle geschrieben hätte.

    Ich fürchte allerdings, ich muss mich momentan damit begnügen, die Änderungen direkt in das Newslettermodul zu integrieren, was halt nicht im Sinne des Erfinders liegt und mir ebenso widerstrebt.

    lg
    Markus

  16. #16
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Markus,
    das hätte ich wohl eh nicht mit nem Hook gemacht (die Daten würden deinem Modul so ja nicht "wirklich" zur Verfügung stehen. Du müsstest sie ja auch wieder aus der DB holen, versenden etc.). Um eine massiv erweiterte Version des gesamten Moduls (a la xtmembers) würdest du wohl nicht rumkommen. Viel Aufwand...

    Vielleicht ist der Weg, der hier bzw. hier beschrieben wird, einfacher...


    cheers
    Antipitch

  17. #17
    Contao-Nutzer Avatar von Rastafanda
    Registriert seit
    26.06.2009.
    Ort
    Nöchling, Österreich
    Beiträge
    63

    Standard

    Hallo Antipitch,

    danke für deine Antwort. Das hab ich ja schon wieder total vergessen, dass an Mitglieder personalisierte Newsletter ja schon funktionieren.

    Das sollte ich mir unbedingt anschaun, auch wenn ich die unschöne Variante im Newslettermodul bereits implementiert habe.

    Ich sollte mir angewöhnen, gleich zu Beginn einen Gesamtüberblick über mein Vorhaben zu erstellen. Anderseits habe ich dank Eurer aller Hilfe wieder viel dazugelernt.

    lg
    Markus

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Weiterleitung nach Hook processFormData
    Von samheero im Forum Entwickler-Fragen
    Antworten: 8
    Letzter Beitrag: 13.02.2011, 19:26
  2. addComment Hook
    Von ecm im Forum Entwickler-Fragen
    Antworten: 6
    Letzter Beitrag: 28.12.2010, 14:26
  3. Antworten: 3
    Letzter Beitrag: 03.11.2010, 14:04
  4. Hook processFormData Problem
    Von JackJones im Forum Entwickler-Fragen
    Antworten: 9
    Letzter Beitrag: 28.12.2009, 07:56

Lesezeichen

Lesezeichen

Berechtigungen

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