Ergebnis 1 bis 17 von 17

Thema: Die Hooks "processFormData" und "processEfgFormData" gleichzeitig

  1. #1
    Contao-Nutzer Avatar von DNS
    Registriert seit
    13.06.2010.
    Ort
    Kassel
    Beiträge
    174

    Standard Die Hooks "processFormData" und "processEfgFormData" gleichzeitig

    Hallo Community,

    in meiner Erweiterung würde ich gerne "processFormData" und "processEfgFormData" gleichzeitig nutzen.

    Wenn ich "processFormData" nutze funktioniert "processEfgFormData" aber nicht.


    Anbei der relevante Code mit Kommentaren was da passiert...

    config.php:
    Code:
    $GLOBALS['TL_HOOKS']['prepareFormData'][] = array('crRegistration', 'formdata');
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('crRegistration', 'redirect');
    $GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01'] = array('crRegistration', 'efgdata');
    Kann man vielleicht in der config.php eine Unterscheidung rein bauen ob ein Formular per efg versendet wird oder per Contao Core?


    crRegistration.php:
    Code:
    class crRegistration extends Backend
    {
    
        // Hook $GLOBALS['TL_HOOKS']['prepareFormData'][]
    
        public function formdata($arrSubmitted, $arrLabels, &$arrForm)
        {
            // funktioniert
        }
    
    
        // Hook $GLOBALS['TL_HOOKS']['processFormData'][]
    
        public function redirect($arrPost, $arrForm, $arrFiles)
        {
            // Parameter "?checkmail=true" wird an die jumpTo-Seite angehängt um im Template anderen Code auszugeben
            $jumpTo = $arrForm['jumpTo'];
            $this->redirect($this->replaceInsertTags('{{link_url::'.$jumpTo.'}}') . '?checkmail=true');
        }
    
    
        // Hook  $GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01']
        // funktioniert nicht, wird wohl vom Hook "processFormData" blockiert?
    
        public function efgdata($arrSubmitted, $arrFiles, $intOldId, &$arrForm)
        {
            return $arrSubmitted;
        }
    
    }
    Jemand eine Idee wie beides zusammen funktioniert?

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

    Standard

    Hi,

    ich denke das Problem liegt im redirect. processEfgFormData ist selbst ein Hook von processFormData. Wenn du allerdings bereits direkt in processFormData einen redirect machst, kann natürlich nichts weiteres mehr ausgeführt werden.

    Probiers mal ohne das redirect, dann sollte es gehen. Dann musst du nur noch eine Lösung finden wann du den redirect machst.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Nutzer Avatar von DNS
    Registriert seit
    13.06.2010.
    Ort
    Kassel
    Beiträge
    174

    Standard

    Okay, ich könnte natürlich schauen ob "sendFormattedMail" gesetzt ist und abhängig davon bei "processEfgFormData" das redirect machen, aber da ist nach dem return ja auch Schluss...
    Kein Plan wie ich den Parameter '?checkmail=true' sonst an die Weiterleitungsseite dran bekomme.

    "jumpTo" ändern nützt mir ja auch nix weil das nur die ID der Weiterleitungsseite ist...

    Denkbar ist ja auch dass die Mail per Contao Core versendet wird aber über den EFG die Formulardaten gespeichert werden.
    Am besten wäre es die "jumpTo" bereits beim Hook "prepareFormData" zu setzen, aber kein plan wie ich das lösen kann...

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

    Standard

    Hi,

    registrier doch einfach den redirect in der processEfgFormData, dann wird er wirklich erst zum Schluss ausgeführt.

    Ebenso würde ich dir empfehlen statt dem insertTag für die generierung der URL folgendes zu verwenden

    PHP-Code:
    $strUrl $this->redirectToFrontendPage($jumpTo,null,true);
    $strUrl $this->addToUrl($strUrl,'checkmail=true');
    $this->redirect($strUrl); 
    Generell ist es natürlich sehr schwer zu helfen wenn nicht klar ist, was du eigentlich machen möchtest. Das ist hier -zumindest mir- noch nicht wirklich ersichtlich.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  5. #5
    Contao-Nutzer Avatar von DNS
    Registriert seit
    13.06.2010.
    Ort
    Kassel
    Beiträge
    174

    Standard

    Danke für den Hinweis.

    Es ist ein double opt in Modul für das Newslettersystem cleverreach.
    Ich verarbeite die Daten welche an Cleverreach gesendet werden sollen im Hook "prepareFormData" und sende den Aktivierungslink per Mail.

    Auf der Bestätigungsseite je nach Parameter ein anderer Text ausgegeben werden:
    - Wenn kein Häckchen bei Newsletter abonnieren: Danke für Ihre Anfrage
    - Wenn Häckchen bei Newsletter abonnieren: Kontrollieren Sie Ihre Mail
    - Wenn link in Mail geklickt wird: Newsletteabonnement aktiviert

    Die Formular Anfragen sollen aber auch versendet werden je nach Einstellung entweder per Contao Core oder per EFG falls installiert.
    -> Das redirect verhindert dies aber...

    Ich denke ich muss die Ausgabe im Template anders stricken sodass diese nicht abhängig von URL-Parameter ist, dann hätte ich das Problem mit dem redirect nicht...

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

    Standard

    Hi,

    dann musst du jedoch zwingend den redirect in beiden HOOKS registrieren. Einmal im proccessFormData und einmal in processEfgFormData.
    Im redirect bei processFormData prüfst du lediglich ob der HOOK im processEfgFormData existiert und überspringst den redirect, denn dann weißt ja ja, dass der eigentliche redirect noch ausgeführt wird.
    Im redirect von processEfgFormData brauchst du dann keine Prüfung mehr einbauen, da du hier ja sowieso an der letzten Position bist wo es eine Weiterleitung geben kann.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  7. #7
    Contao-Nutzer Avatar von DNS
    Registriert seit
    13.06.2010.
    Ort
    Kassel
    Beiträge
    174

    Standard

    Okay das wäre ne Idee, aber dann gibt es ja dennoch das Scenario dass jemand per Contao Core versendet, aber im EFG Formulardaten speichern benutzt.

    Hmm wobei eigentlich egal, müsste trotzdem so gehen.

    Kannst Du mir sagen wie man prüft ob der HOOK vorhanden ist?

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

    Standard

    Na du hast deinen HOOK doch in der config.php registriert?

    Also müsstest du in der redirect lediglich prüfen

    PHP-Code:

    if(!isset($GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01']))
    {
       
    // in dem Fall prüfen wir ob der HOOK NICHT existiert um den redirect auszuführen
       
    $this->redirect()....

    Edit: Obwohl das auch Quatsch ist, wie ich grad feststelle, denn der HOOK kann zwar vorhanden sein, aber man muss das EFG ja nicht nutzen. Von daher müsstest du rausfinden ob in dem Formular in dem du dich gerade befindest der EFG genutzt wird. Hier solltest du auf die entsprechenden Checkboxen zugreifen und deren Wert prüfen, das macht mehr sinn und ist sicherer.
    Geändert von the_scrat (16.06.2014 um 10:20 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  9. #9
    Contao-Nutzer Avatar von DNS
    Registriert seit
    13.06.2010.
    Ort
    Kassel
    Beiträge
    174

    Standard

    Hmm, das redirect muss da raus, das steigt ja direkt mit exit aus und verhindert in beiden Fällen dass die Anfrage versendet wird.
    Da muss ich mir was anderes überlegen wie ich die Ausgabe im Template realisiere.

  10. #10
    Contao-Nutzer Avatar von DNS
    Registriert seit
    13.06.2010.
    Ort
    Kassel
    Beiträge
    174

    Standard

    So, alles mist, hab es nun über die Session gelöst, danke für die Hilfe.

  11. #11
    Contao-Fan
    Registriert seit
    08.07.2009.
    Beiträge
    530

    Standard

    Hallo DNS,

    gibt es Deine Erweiterung noch bzw. ist diese im Repository verfügbar?

    Ich denke über eine ähnliche Lösung auf Basis der "neuen" Rest API von CleverReach nach, bei welcher bspw. die Felder Name und E-Mail-Adresse aus einem Formular an die CleverReach Rest API übergeben werden, sofern ein Häkchen zur Einverständnis gesetzt ist. Soweit ich gesehen habe, kann die E-Mail zum Double-Opt-In direkt über die API ausgelöst werden und man müsste auf diesem Weg keine parallele Verwaltung der Adressen in Contao aufbauen, da diese direkt an CleverReach übergeben werden.

    Siehe: https://rest.cleverreach.com/howto/#examples (Double-Opt-In)

  12. #12
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Das Problem an der API ist, dass man für die OptIn-Mail auch Formulare in Cleverreach anlegen muss. Irgendwie schade, dass das nicht getrennt ist.

    Die Idee, die Empfänger gar nicht mehr in Contao zu verwalten hatten wir auch, im Moment gibt es hierzu einen Proof-Of-Concept mit wem wir Empfänger direkt in CR anlegen. Die Opt-In Mail wird dabei in Contao mit dem Notification-Center verwaltet. Damit benötigt man in CR prinzipiell nur eine Gruppe. Meld dich bei Interesse einfach mal per PM oder Tagsüber im IRC

  13. #13
    AG Pressearbeit
    Community-Moderator
    Buchautor 'Contao für Webdesigner'
    Avatar von planepix
    Registriert seit
    05.06.2009.
    Ort
    Stuttgart
    Beiträge
    6.482
    Partner-ID
    107
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das hier ist bekannt?
    https://www.cleverreach.com/de/integ...nchronisation/

    Hier werden die An- und Abmeldungen direkt an Cleverreach weitergeleitet.
    ---------------------------------
    Beste Grüße planepix
    Contao für Webdesigner (Website), Twitter: @contaowebdesign
    weitzeldesign
    Contao-Sprechstunde
    Contao Schulungen: https://www.weitzeldesign.com/cms-co...chulungen.html
    Contao Jahrbuch: www.contao-jahrbuch.de
    Contao Agenturtag: www.contao-agenturtag.de
    Contao Stammtisch Stuttgart: www.contao-stammtisch-stuttgart.de
    Contao 4 Erfahrungen als Gitbook: https://app.gitbook.com/@planepix/s/...-mit-contao-4/
    Contao 4 & Manager Hosterhinweise: https://github.com/contao/contao-manager/wiki

    Schon wieder ein Update?
    Glücklich sind die, die den Wert erkennen – und wertschätzen.
    „Muss man machen wie beim Zahnarzt. Der bestraft einen auch mit hohen Rechnungen wenn man die Pflege vernachlässigt.”

  14. #14
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Ja, aber hier werden "nur" die Newsletter-Listen von Contao mit CL synchronisiert. Die Registrierung läuft über die ganze normlaen Contao-Newsletter-Modulen, mit den entsprechenden Vor- und Nachteilen.

  15. #15
    Contao-Fan
    Registriert seit
    08.07.2009.
    Beiträge
    530

    Standard

    @planepix: Ich suche nach einer Lösung, bei der in Contao selbst gar keine Newsletter / Abonnenten verwaltet werden müssen. Dementsprechend ist eine Synchronisation zwar grundsätzlich hilfreich, erfordert aber eben einen parallelen Datenbestand in Contao.

    @Thraile: Ich könnte damit leben, dass die Verwaltung der Formulare über CleverReach läuft, da ja auch die komplette Abonnenten- und Versandverwaltung über CR laufen würde. Contao soll lediglich die E-Mail-Adresse sowie ggf. weitere Felder bei Einverständnis an CR übergeben.

    Habt ihr den Proof of Concept mittels SOAP oder Rest aufgebaut? Auf der von mir zitierten Seite gibt es eigntlich für alle nötigen Prozesse Beispiele: Authentifizierung -> Double-Opt-In-Verfahren. Es müssen dann jeweils nur Gruppen-ID und Formular-ID zusätzlich übergeben werden. Gerne melde ich mich per PM bei Dir

  16. #16
    AG Pressearbeit
    Community-Moderator
    Buchautor 'Contao für Webdesigner'
    Avatar von planepix
    Registriert seit
    05.06.2009.
    Ort
    Stuttgart
    Beiträge
    6.482
    Partner-ID
    107
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo bird,

    bei mir macht das nur NL-Abonnenten mit dem Contao-Coremodul zu CE schieben. In Contao gibts nur die zwei Module zum An- und Abmelden. Alles andere findet bei CR statt.
    ---------------------------------
    Beste Grüße planepix
    Contao für Webdesigner (Website), Twitter: @contaowebdesign
    weitzeldesign
    Contao-Sprechstunde
    Contao Schulungen: https://www.weitzeldesign.com/cms-co...chulungen.html
    Contao Jahrbuch: www.contao-jahrbuch.de
    Contao Agenturtag: www.contao-agenturtag.de
    Contao Stammtisch Stuttgart: www.contao-stammtisch-stuttgart.de
    Contao 4 Erfahrungen als Gitbook: https://app.gitbook.com/@planepix/s/...-mit-contao-4/
    Contao 4 & Manager Hosterhinweise: https://github.com/contao/contao-manager/wiki

    Schon wieder ein Update?
    Glücklich sind die, die den Wert erkennen – und wertschätzen.
    „Muss man machen wie beim Zahnarzt. Der bestraft einen auch mit hohen Rechnungen wenn man die Pflege vernachlässigt.”

  17. #17
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    @bird: Das Modul geht auf die neue REST-API, da die laut Cleverreach länger supported werden wird.

    Also bisher läuft es bei uns so: Im Modul stellst du ein, für welche Gruppen die Anmeldung laufen soll und welche Felder aus den Gruppen im Formular auftauchen sollen. Bei Bedarf kann man die Labels noch anpassen, ansonsten werden die halt von CL so übernommen. Bis auf das Feld E-Mail und die Sicherheitsabfrage sind alle Felder natürlich optional.

    Nach dem Ausfüllen des Formulars versendet das Modul via Notification-Center die Opt-In Mail mit dem Bestätigungslink und trägt die Daten schon mal als deaktivierten User in die jeweiligen Gruppen ein. Mit dem Click auf den Aktivierungslink werden die User dann auf aktiv gestellt.

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
  •