Ergebnis 1 bis 6 von 6

Thema: HOOK processFormData - Fehler zurück geben

  1. #1
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Frage HOOK processFormData - Fehler zurück geben

    Hallo zusammen,

    ich stehe auf dem Schlauch!

    Ich habe den processFormData HOOK für eine API verwendet, sodass beim Versenden des Formulars die Daten an die API übermittelt werden. Funktioniert auch ...

    Die API gibt auch Fehlermeldungen zurück. Diese würde ich gerne auf der Weiterleitungsseite anzeigen.

    Hier steht ganz klar, dass der processFormData HOOK kein return value akzeptiert:
    https://docs.contao.org/books/api/ex...sFormData.html

    Wie kann ich die Daten aus der Fehlermeldung dennoch ins Template auf der Weiterleitungsseite bringen?

    Mein Konstrukt hat den Aufbau in der HOOK-Class:

    PHP-Code:
    <?php
    class MyClass
    {
      public function 
    addto($arrPost$arrForm$arrFiles)
      {
        try {
          
    // Logik: Schiebt Daten in die API
        
    } catch {
          
    // Error aus der API
        
    }
      }
    }
    ?>
    Geändert von ttcdummy (06.08.2018 um 11:11 Uhr)

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Die Resultatseite zeigt ja kein Formular an. Das ist einfach nur eine ganz normale Seite ohne jegliche Relation zum Formular.
    Sowas gibt es nicht. Du musst dir selber was ausdenken. Ein eigenes Inhaltselement, das auf der Zielseite platziert wird oder so.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Wäre was gegen das einzuwenden?:

    PHP-Code:
    <?php
    class MyClass
    {
      public function 
    addto($arrPost$arrForm$arrFiles)
      {
        try {
          
    // Logik: Schiebt Daten in die API
        
    } catch {
          
    $error = array();
          
    $error['data'] = $rest->error;
          
    $session Session::getInstance();
          
    $session->set'error' $error );
        }
      }
    }
    ?>
    Und in der Weiterleitungsseite dann z. B. ein HTML-Modul mit:

    PHP-Code:
    <?php
      $session 
    Session::getInstance(); 
      
    $error $session->get'error' ); 
      
    $data $error['data']; 
      
    print_r($data);
      
    $error $session->remove'error' );
    ?>
    Grüße

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Grundsätzlich nicht nein. Wichtig ist einfach immer, dass man - so wie du das in deinem Beispiel gemacht hast - den Session-Wert wieder entfernt.
    Tendenziell nutzen Entwickler die Session viel zu oft. Das hat den entscheidenden Nachteil, dass - sobald die Session gestartet wurde - eine Response des Servers implizit "private" wird. Sie kann also nie auf dem Server zwischengespeichert werden.
    In deinem Fall ist das der gewünschte Effekt und es ist richtig so. Würdest du den Wert allerdings nicht mehr löschen, so müsste die Session auf jeglichen Seiten gestartet werden, die der Besucher nach deiner Weiterleitungsseite aufruft. D.h. er hätte dann nie eine Seite aus dem Cache.

    Das nur so als zusätzlicher Hinweis. Hoffe es ist verständlich warum und wieso
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

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

    Standard

    Wir haben so etwas schon einmal implementiert und dafür den validateFormField Hook verwendet, wie es auch vorgesehen ist. Da der Hook natürlich nach dem Absenden des Formulares für jedes Feld einzeln ausgeführt wird, muss man sich ein wenig behelfen: du könntest die Daten zB. im compileFormFields Hook an die API senden, die Antwort in einer Variable speichern und dann im validateFormField Hook überprüfen, ob für das jeweilige Feld ein Fehler von der API zurück kam. In der Session muss dazu nichts gespeichert werden.
    Geändert von Spooky (08.08.2018 um 07:47 Uhr)

  6. #6
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Wie kann ich die Daten aus der Fehlermeldung dennoch ins Template auf der Weiterleitungsseite bringen?
    Wenn es auf der Weiterleitungsseite wie initial beschrieben sein soll schon :P
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

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
  •