Contao-Camp 2024
Ergebnis 1 bis 9 von 9

Thema: Erster onSubmit_callback gibt alte formulardaten zurück

  1. #1
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    107

    Standard Erster onSubmit_callback gibt alte formulardaten zurück

    Hi,
    ich habe für tl_member eine funktion an den onSubmit_callback gehängt.
    Allerdings enthält der übergebene DataContainer die alten Formulardaten ( ohne z.B. geänderten Vornamen). Wenn ich aber ein 2. mal im Backend auf "Speichern" drücke ist es korrekt.

    PHP-Code:
    $record=$dc->activeRecord->fetchAllAssoc();
    foreach(
    $record[0] as $key=>$value )
                {

    Mache ich was falsch? Oder muss ich die ID vom Container nehmen und einen Query auf die Datenbank machen um die aktuellen Daten zu bekommen?
    Matthias Honisch
    LocalBranding

  2. #2
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Poste mal den ganzen Code und was genau hast du vor?
    Liebe Grüße
    WebRoxx


  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.900
    Partner-ID
    10107

    Standard

    Im onsubmit_callback hast du im activeRecord die Daten aus der Datenbank, bevor die neuen Daten gespeichert werden. Und in so fern bekommt du bei einem Datenbank Query auch nur die Daten, bevor die neuen Daten gespeichert wurden. Die neuen Daten hast du nur im POST Request.

  4. #4
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    107

    Standard

    Ich will, wenn ein Datensatz bearbeitet wird, diesen Datensatz in eine andere Datenbank schreiben. Hier prüfe ich ob der Datensatz in meiner DB exestiert.
    Aber momentan gebe ich mir einfach $record aus. Wodurch mir aufgefallen ist, dass die Daten nicht stimmen.
    PHP-Code:
    public function syncRecord(DataContainer $dc)
    {
        
    $di = new MyDB();
        
    $db $di->getConnection();
        
    $id $dc->id;
        
    $stmt $db->prepare("SELECT id FROM tl_member WHERE id = ?");
        
    $success $stmt->execute(array($id));
        
        if (
    $stmt->rowCount() > 0) {
            
      
            
    $record=$dc->activeRecord->fetchAllAssoc(); 
            
    log_message(print_r($record,TRUE),"");

            foreach(
    $record[0] as $key=>$value )
                {
                 }
             }

    Matthias Honisch
    LocalBranding

  5. #5
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    107

    Standard

    https://docs.contao.org/dev/reference/dca/callbacks/ sagt doch "Executed when a back end form is submitted after the record has been updated in the database. Allows you to e.g. modify the record afterwards (used to calculate intervals in the calendar extension)."
    Ich hatte das so verstanden, dass die aktuellen Daten dort drin sind.
    Matthias Honisch
    LocalBranding

  6. #6
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von lbmh Beitrag anzeigen
    Ich will, wenn ein Datensatz bearbeitet wird, diesen Datensatz in eine andere Datenbank schreiben. Hier prüfe ich ob der Datensatz in meiner DB exestiert.
    Welchen Datensatz willst du in eine andere Tabelle schreiben? Den alten Stand oder den neuen? Ansonsten habe ich sowas glaub schon mal mit dem save_callback gelöst, das war dann aber mehr Feld bezogenes
    Liebe Grüße
    WebRoxx


  7. #7
    Contao-Nutzer
    Registriert seit
    24.04.2018.
    Beiträge
    107

    Standard

    Naja wenn ich den alten haben wollte hätte es ja schon funktioniert. Aber jetzt mit dem Post funktioniert es richtig.
    Matthias Honisch
    LocalBranding

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.900
    Partner-ID
    10107

    Standard

    Zitat Zitat von lbmh Beitrag anzeigen
    https://docs.contao.org/dev/reference/dca/callbacks/ sagt doch "Executed when a back end form is submitted after the record has been updated in the database. Allows you to e.g. modify the record afterwards (used to calculate intervals in the calendar extension)."
    Ich hatte das so verstanden, dass die aktuellen Daten dort drin sind.
    Hm, stimmt, ich werde das nochmal überprüfen.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.900
    Partner-ID
    10107

    Standard

    Ja, also der onsubmit_callback wird ausgeführt, nachdem die Werte in der Datenbank aktualisiert wurden. Aber es könnte sein, dass du mit deinem Database Query nur die bereits von MySQL gecachten Einträge bekommst.

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
  •