Ergebnis 1 bis 5 von 5

Thema: Callback-Funktion nach Speichern von Forumlardaten im BE

  1. #1
    Contao-Nutzer Avatar von fivebytes
    Registriert seit
    18.01.2013.
    Ort
    Iserlohn
    Beiträge
    93

    Standard Callback-Funktion nach Speichern von Forumlardaten im BE

    Hallo zusammen,

    ich suche nach einer Möglichkeit einen Callback (onsubmit) für die Bearbeitung der gespeicherten Formulardaten im Backend zu integrieren. Das Ganze ist eine Contao 3.4.4 Installation mit EFG 2.2.1.

    Geplanter Ablauf soll wie folgt sein:

    - Benutzer gibt Daten im Frontend ein
    - Admin prüft die Daten im Backend und veröffentlicht diese ggf.
    - Bei der Veröffentlichung sollen E-Mails an den Benutzer gesendet werden, die dies wünschen. Aber eben erst nach der Veröffentlichung im BE durch den Admin!

    Ich habe schon mit dem "processEfgFormData" experimentiert. Der klappt an sich wunderbar, wird aber wohl nur bei Eingabe im Frontend ausgelöst.

    http://www.tl-usertreffen.weitzeldesign.com/efg-6.html und http://de.contaowiki.org/Callback-Fu...er_neuen_Seite brachten mich leider nicht weiter und andere Versuche die dca mittels dcaconfig.php oder mit einer myClass/dca/tl_formdata.php zu manipulieren und so meine Funktionen zu integrieren sind bisher auch alle gescheitert.

    Ich stehe das nun ein wenig auf dem Schlauch und Hilfe wäre echt klasse. Gibt es hierfür nicht irgendeine Lösung?
    Entspannte Grüße aus Iserlohn
    Stefen

    fivebytes.de - Internetentwicklung & Webdesign | Mit Contao umgesetzt Speedy´s Hamsterseiten

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

    Standard

    Hi,

    was genau funktioniert denn nicht, denn der onsubmit_callback ist ja jetzt kein efg spezifischer, sondern einer von Contao, welcher immer beim Absenden eines Backendformulars aufgerufen wird, daher müsste der wunderbar funktionieren.
    Was jetzt in dem Wiki nicht drin steht (ich habs zumindest jetzt nicht gesehen), dass du die Klasse über den Autoloader registrieren musst. Also die Klasse/Methode die letztendlich dann den Mailversand erledigen soll.

    Was genau "geht denn nicht", oder welche Fehlermeldung erhälst du? Mit ein bisschen detaillierteren Infos, kann man dir bestimmt schneller weiterhelfen :-)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Nutzer Avatar von fivebytes
    Registriert seit
    18.01.2013.
    Ort
    Iserlohn
    Beiträge
    93

    Standard

    Hi,

    eine Mütze Schlaf und ein sauberer Anfang nach Wiki-Vorlage (mit Autoloader) und schon geht's auf einmal ;-) keine Ahnung wo da gestern genau der Fehler hing, aber jetzt komm ich zumindest schon mal an die Stelle, wo ich hin will.

    Eintrag dcaconfig.php
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_formdata']['config']['onsubmit_callback'][] = array('backendExtended','sendMail'); 
    und die backendExtended.php (system/module/backendExtended) sieht wie folgt aus
    PHP-Code:
    if (!defined('TL_ROOT')) die('You can not access this file directly!');
     
    class 
    backendExtended extends Backend 

        public function 
    sendMail($dc
        {
            if ( 
    $dc->activeRecord->form[0] == 'Forum :: Frage erstellen' )
            {

                echo 
    "publishedDC: " $dc->activeRecord->published "<br/>";
                echo 
    "publishedPOST: " $this->Input->post('published') . "<br/>";
                
                die();
                
            }
        }

    Aber hier hab ich nun das Problem, dass die Daten anscheinend bereits gespeichert wurden, wenn meine Funktion an der Reihe ist, denn mein $dc->activeRecord->published ist immer identisch mit $this->Input->post('published') und ich muss ja den Fall abfangen, wenn der Originaleintrag nicht veröffentlicht ist (!$dc->activeRecord->published) und der Admin den veröffentlichen Haken gesetzt hat ($this->Input->post('published') == 1), sonst gehen die Mails jedes Mal raus sofern ein Eintrag im BE geändert wird der bereits veröffentlicht ist.

    Ist es nicht möglich mit dem 'onsubmit_callback' auf die DB-Daten vor der Änderung zuzugreifen?
    Entspannte Grüße aus Iserlohn
    Stefen

    fivebytes.de - Internetentwicklung & Webdesign | Mit Contao umgesetzt Speedy´s Hamsterseiten

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

    Standard

    Also laut Doku ist das genau der Fall

    https://contao.org/de/manual/3.4/dat...html#callbacks

    onsubmit_callbackWird
    beim Abschicken eines Backend-Formulars ausgeführt. Ermöglicht z.B. die Modifizierung der Formulardaten, bevor diese in die Datenbank geschrieben werden (wird in der Kalender-Erweiterung zur Intervalberechnung eingesetzt).
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  5. #5
    Contao-Nutzer Avatar von fivebytes
    Registriert seit
    18.01.2013.
    Ort
    Iserlohn
    Beiträge
    93

    Standard

    ;-) die Doku kenn ich, daher wollte ich ja auch so vorgehen, aber die Praxis zeigt leider etwas anderes. Fakt ist, auf diese Weise kommt man NICHT(!) an die Daten vor der Speicherung, sondern nur an die bereits gespeicherten Daten. Ich denke mal, dass hierfür wahrscheinlich die EFG-Erweiterung verantwortlich ist.

    https://bitbucket.org/thk/efg/issue/...f-r-generierte

    Wenn ich aber den Lösungsweg (wie dort vorgeschlagen) mit einem onload_callback gehe, bekomme ich erneut gar keinen Zugriff auf die Daten?! Es muss doch eine Möglichkeit geben trotz EFG an die Daten vor dem Speichern zu gelangen. Wäre schick wenn sich hierzu evtl. mal ein Entwickler der EFG-Erweiterung äußern könnte.
    Entspannte Grüße aus Iserlohn
    Stefen

    fivebytes.de - Internetentwicklung & Webdesign | Mit Contao umgesetzt Speedy´s Hamsterseiten

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
  •