Ergebnis 1 bis 23 von 23

Thema: Post Daten auslesen funktioniert nicht

  1. #1
    Contao-Nutzer Avatar von cwe
    Registriert seit
    30.12.2020.
    Ort
    Münster (Westf)
    Beiträge
    33

    Standard Post Daten auslesen funktioniert nicht

    Hallo liebes Forum,

    etliche Male habe ich bereits Formular-Daten auf der Dankesseite (Weiterleitung nach dem Absenden eines Formulars im Frontend) ausgewertet.

    Auf meiner aktuellen Contao 5.1.2er Version läuft das nicht.

    Verwende ich \input::post, erhalte ich die Fehlermeldung:

    request.CRITICAL: Uncaught PHP Exception Symfony\Component\ErrorHandler\Error\ClassNotFound Error: "Attempted to load class "Input" from the global namespace. Did you forget a "use" statement for "Symfony\Component\Console\Input\Input"?" at /html/contao/templates/mail_versenden.php line 19 ...

    Verwende ich echo $this->replaceInsertTags('{{form_session_data::email}}') ; erhalte ich:

    request.CRITICAL: Uncaught PHP Exception Symfony\Component\ErrorHandler\Error\UndefinedMeth odError: "Attempted to call an undefined method named "replaceInsertTags" of class "Contao\InsertTags". Did you mean to call "replaceInternal"?" at /html/contao/templates/mail_versenden.php

    Ich glaube, ich stehe enorm auf dem Schlauch, hat jemand einen Tipp?

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    PHP-Code:
    \Contao\Input::post() 
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer Avatar von cwe
    Registriert seit
    30.12.2020.
    Ort
    Münster (Westf)
    Beiträge
    33

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    PHP-Code:
    \Contao\Input::post() 
    Hallo! Danke für die Idee, var_dump gibt mir allerdings NULL zurück :/

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Ich meine, die Daten werden nach Verarbeitung gelöscht, Du kannst sie Dir aber aus der Session holen (siehe z.B. https://github.com/contao/contao/blo.../Form.php#L398).
    Geändert von fiedsch (17.04.2023 um 17:02 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Nutzer Avatar von cwe
    Registriert seit
    30.12.2020.
    Ort
    Münster (Westf)
    Beiträge
    33

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Ich mein, die Daten werden nach Verarbeitung gelöscht, Du kannst sie Dir aber aus der Session holen (siehe z.B. https://github.com/contao/contao/blo.../Form.php#L398).
    Mit {{form_session_data::email}} komme ich auch tatsächlich an die Daten, das funktioniert. Dann habe ich versucht, über $this->replaceInsertTags den Wert in PHP verfügbar zu machen, allerdings erhalte ich dann die genannte Fehlermeldung :/

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

    Standard

    Du musst dir wie gesagt die Daten aus der Session holen. So macht das der Insert Tag: https://github.com/contao/contao/blo....php#L702-L703
    » sponsor me via GitHub or PayPal or Revolut

  7. #7
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Ich stehe im Moment vor einer ähnlichen Herausforderung, dass ich die Post-Daten aus einem Formular in einem PHP-Skript weiterverarbeiten will.
    "$this->replaceInsertTags" war in der Vergangenheit immer ein guter Weg - jedenfalls für mich …

    Wie müsste der Code/Befehl lauten? Sorry, aber mit dem Link zu "$attribute = $request?->getSession()->get(Form::SESSION_KEY);" komme ich irgendwie nicht klar bzw. stehe auf dem Schlauch.

    Bin für jeden Tipp dankbar - erst recht, wenn es noch ein Beispiel (und nicht nur einen Link) gibt, wie es unter Contao 5.2 geht

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

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Sorry, aber mit dem Link zu "$attribute = $request?->getSession()->get(Form::SESSION_KEY);" komme ich irgendwie nicht klar bzw. stehe auf dem Schlauch.
    Arbeite dich einfach Schritt für Schritt voran - und stelle Fragen wenn du nicht weiter weißt.
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    1. {{form_session_data::email}} = Anzeige im Frontend - passt also
    2. Übergabe der Daten an eine PHP-Variable mit $this->replaceInsertTags = klappt nicht > Fehlermeldung "Call to a member function replace() on null"
    3. Ausgabe von "$attribute = $request?->getSession()->get(Form::SESSION_KEY);" mit echo = keine Anzeige

    Alternatives Vorgehen scheitert auch …
    Ich speichere die Daten in einer eigenen Tabelle in der Datenbank und wollte mit "Database::getInstance()" anschließend die Daten verarbeiten.
    Auch hier nur Fehlermeldungen …

    Mir scheint, dass für mich die Lösung heißt: Contao 4.13 ... Ich bin wohl (noch) nicht reif für Contao 5.2 …

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

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    2. Übergabe der Daten an eine PHP-Variable mit $this->replaceInsertTags = klappt nicht > Fehlermeldung "Call to a member function replace() on null"
    Nutze den Debug-Modus und poste den Stack Trace.



    Zitat Zitat von Daniel24 Beitrag anzeigen
    3. Ausgabe von "$attribute = $request?->getSession()->get(Form::SESSION_KEY);" mit echo = keine Anzeige
    Den Code kannst du nicht 1:1 einfach so in einem Template nutzen. Du musst zuerst an den Request kommen.
    » sponsor me via GitHub or PayPal or Revolut

  11. #11
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nutze den Debug-Modus und poste den Stack Trace.
    Sorry, aber warum soll ich den Debug-Modus nutzen? Ich habe dich so verstanden, dass "replaceInsertTags" in Contao 5 nicht mehr unterstützt wird. https://community.contao.org/de/show...gs-in-Contao-5
    Ich bin daher nicht überrascht, dass es nicht geht.
    Oder wäre "$this->insertTagParser->replace('{{form_session_data::email}}')" der richtige Weg?


    Zitat Zitat von Spooky Beitrag anzeigen
    Den Code kannst du nicht 1:1 einfach so in einem Template nutzen. Du musst zuerst an den Request kommen.
    Und wie? Mit $_SESSION['Form::SESSION_KEY'] jedenfalls nicht …

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

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Sorry, aber warum soll ich den Debug-Modus nutzen?
    Den brauchst du immer für die Fehlersuche.


    Zitat Zitat von Daniel24 Beitrag anzeigen
    Und wie?
    Wie du an den Request kommst meinst du? Grundsätzlich mit dem RequestStack Service. Aber beschreibe mal genauer was du überhaupt machen willst, so viel Logik sollte normalerweise nicht in einem Template passieren.


    Zitat Zitat von Daniel24 Beitrag anzeigen
    Mit $_SESSION['Form::SESSION_KEY'] jedenfalls nicht …
    Warum willst du $_SESSION['Form::SESSION_KEY'] nutzen?
    Geändert von Spooky (18.01.2024 um 13:59 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

  13. #13
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie du an den Request kommst meinst du? Grundsätzlich mit dem RequestStack Service. Aber beschreibe mal genauer was du überhaupt machen willst, so viel Logik sollte normalerweise nicht in einem Template passieren.
    Im Formular wird Vor-, Nachname und E-Mail-Adresse eingetragen - diese Daten sollen per API an einen Dienstleister übergeben werden. Dafür habe ich ein Modul "Eigenes HTML" angelegt und im Template entsprechend den Code eingetragen. Dieses Modul ist auf der Bestätigungseite "Formulardaten erfolgreich gesendet" eingebunden.

    Unter Contao 4 hätte ich das so gelöst:

    PHP-Code:
    $email = \Controller::replaceInsertTags("{{post::email}}");
    ... 

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

    Standard

    Das ist der völlig falsche Ansatz. Sowas machst du in einem processFormData Hook.
    » sponsor me via GitHub or PayPal or Revolut

  15. #15
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das ist der völlig falsche Ansatz. Sowas machst du in einem processFormData Hook.
    Ok - aber das ist nicht die Lösung, wenn ich eine Alternative für das weggefallene "replaceInsertTags" suche.

    Nichts für ungut, aber Deinen Antworten bisher entnehme ich, dass es ab Contao 5 nicht mehr vorgesehen ist, dass auch Anwender aus dem Hobbybereich Contao nutzen können. Wer ohne Nachschlagwerk mit PHP, Symfony usw. nicht zurecht kommt, soll wohl lieber etwas anders machen?

    P.S.: Für den Hook "processFormData" brauche ich keine Hilfe. Habe ich an anderer Stelle schon erfolgreich eingesetzt.

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

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Ok - aber das ist nicht die Lösung, wenn ich eine Alternative für das weggefallene "replaceInsertTags" suche.
    Die Verwendung von "replaceInsertTags" in der Form wie du sie machst war schon immer falsch, egal in welcher Contao Version
    » sponsor me via GitHub or PayPal or Revolut

  17. #17
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Du willst Wasser aus einer Karaffe in Dein Glas - kann man einfach eingießen...

    Mit

    Zitat Zitat von Daniel24 Beitrag anzeigen
    PHP-Code:
    $email = \Controller::replaceInsertTags("{{post::email}}");
    ... 
    schüttest Du das Wasser aus der Karaffe in einen Eimer - rennst 3x um den Tisch - schüttest das Wasser zurück in die Karaffe und dann in Dein Glas... kann man machen - muss man aber nicht

  18. #18
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Du willst Wasser aus einer Karaffe in Dein Glas - kann man einfach eingießen... schüttest Du das Wasser aus der Karaffe in einen Eimer - rennst 3x um den Tisch - schüttest das Wasser zurück in die Karaffe und dann in Dein Glas... kann man machen - muss man aber nicht
    Ach, wie ist das schön! Wir leben in einer freien Welt - ich kann machen, was ich will

    Aber mal im Ernst: Warum muss mit Kanonen auf Spatzen geschossen werden (um noch einmal ein anderes Bild zu verwenden), wenn ich die Formulareingaben nach Absenden des Formulars an eine PHP-Variable übergeben möchte? Natürlich kann ich das auch mit einem Hook machen - inkl. Ordner anlegen, Eventlistner anlegen/schreiben, Eintrag in der Composer-Datei und via Contao-Manager den Cache erneuern.

    Gibt es einen Grund - z.B. unsicher oder lange Ladezeiten -, um auf gar keinen Fall "replaceInsertTags" (oder eine mir bisher unbekannte Alternative in Contao 5) zu verwenden?

    Sorry, ich will hier keine philosophische Diskussion vom Zaun brechen. Wenn es was zu lernen gibt, bin ich auf jeden Fall dabei! Dann aber gerne auch mit Fakten …

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

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Warum muss mit Kanonen auf Spatzen geschossen werden (um noch einmal ein anderes Bild zu verwenden), wenn ich die Formulareingaben nach Absenden des Formulars an eine PHP-Variable übergeben möchte?
    Das ist ja nicht das was du machen möchtest. Du möchtest Formulareingaben an eine API senden. Das ist via processFormData Hook "mit Kanonen auf 'was-auch-immer-man-mit-Kanonen-normalerweise-beschießen-möchte' schießen".
    » sponsor me via GitHub or PayPal or Revolut

  20. #20
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das ist ja nicht das was du machen möchtest. Du möchtest Formulareingaben an eine API senden. Das ist via processFormData Hook "mit Kanonen auf 'was-auch-immer-man-mit-Kanonen-normalerweise-beschießen-möchte' schießen".
    Nee, eigentlich möchte ich nur eine Antwort auf meine Frage …

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

    Standard

    Welche Frage genau?
    » sponsor me via GitHub or PayPal or Revolut

  22. #22
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    60

    Standard

    Letzlich das Thema dieses Threads …

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Gibt es einen Grund - z.B. unsicher oder lange Ladezeiten -, um auf gar keinen Fall "replaceInsertTags" (oder eine mir bisher unbekannte Alternative in Contao 5) zu verwenden?
    Und … Was wäre das bessere/vernünftiger Vorgehen?

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

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Letzlich das Thema dieses Threads …
    Das Thema dieses Threads ist etwas anders. Aber die Antwort auf die Frage
    Zitat Zitat von Daniel24 Beitrag anzeigen
    Gibt es einen Grund - z.B. unsicher oder lange Ladezeiten -, um auf gar keinen Fall "replaceInsertTags" (oder eine mir bisher unbekannte Alternative in Contao 5) zu verwenden?
    ist im Endeffekt Performance (und Sinnlosigkeit). Es gibt einfach keinen Grund für die Verarbeitung von Daten Insert Tags zu nutzen. Historisch nutzen das manche User vermutlich nur aufgrund mangelndem Wissen über das System, welches sie nutzen.


    Zitat Zitat von Daniel24 Beitrag anzeigen
    Und … Was wäre das bessere/vernünftiger Vorgehen?
    Die jeweiligen Daten direkt abgreifen. Insert Tags nutzt du nur, wenn du irgendwo Inhalt direkt ausgeben möchtest - nicht für weitere Verarbeitung.
    » sponsor me via GitHub or PayPal or Revolut

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
  •