Contao-Camp 2024
Ergebnis 1 bis 23 von 23

Thema: Feldinhalte bei mehrseitigen Formularen vor Absenden anzeigen (mp_forms)

  1. #1
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    51

    Standard Feldinhalte bei mehrseitigen Formularen vor Absenden anzeigen (mp_forms)

    Hallo all,

    ich möchte unter Contao 3.5.24 ein mehrseitiges Formular erstellen. Ich dachte das wäre eine gute Gelegenheit nun mal dem Umstieg von efg zu vollziehen und das mit aktuelleren Erweiterungen auszuprobieren. Ich habe mich also mal an die Erweiterungen [mp_forms], in Verbindung mit [leads] und dem [notification_center] gemacht.

    Das funktioniert auch alles großartig und so ein mehrseitiges Formular ist hiermit schnell erstellt, die Benachrichtigung geht super raus und die Formularwerte werden im Backend hinterlegt. Alles chico, 1000 Dank an die Jungs von Terminal42.

    Nun möchte ich jedoch auf jeder meiner Zwischenseiten, einige der zuvor eingegebenen Feldwerte für den Nutzer anzeigen lassen und zum Ende möchte ich eine Übersichtsseite anzeigen, die die eingegebenen Werte vor dem eigentlichen Absenden noch mal anzeigt.

    Dies will mir einfach nicht gelingen. Egal was ich anstelle, ich bekomme einfach keine Ausgabe hin. Ich habe es mit HTML Elementen auf den Zwischenseiten und dem Einsatz von Inserttags/Inputvar versucht aber sowas wie
    Code:
    {{session::feldname}} oder {{post::feldname}}
    führt zu keiner Ausgabe.
    Ich habe es auch mit angepasssten Templates (form_mp_forms_page_switch.html5) für die Zwischenseiten probiert. Damit sind dann unterschiedliche "eigene" Textausgaben möglich aber egal wie ich versuche die Session Werte des Formulars anzusprechen, die Ausgabe bleibt immer leer.

    Ich wäre unendlich dankbar, wenn irgendjemand der das schon mal gemacht hat, hier ein Syntaxbeispiel posten könnte, wie die Session Werte des Formulars angesprochen und zur Anzeige auf den Zwischenseiten gebracht werden können. "Da" sind sie, aber wie kommt man an sie ran?

    Vielen Dank euch allen!

  2. #2
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    51

    Standard

    Ich habe die Lösung doch selbst gefunden! Manchmal sieht man den Wald vor lauter Bäumen nicht (Kopf->Tisch->peng)

    mp_forms verwendet eine Session Variable mit Namen MPFORMSTORAGE für die Feldwerte. Ich kann also im Template wunderbar jeden einzelnen Wert über:

    PHP-Code:
    <?php echo $_SESSION['MPFORMSTORAGE'][1][0][submitted]['feldname']; ?>
    darstellen. Das obige Beispiel ist für die erste Formularseite. Wenn ich Eingaben der 2ten Formularseite haben möchte, dann geht das über:

    PHP-Code:
    <?php echo $_SESSION['MPFORMSTORAGE'][1][1][submitted]['anderer_feldname']; ?>
    und so weiter.

    Ich hoffe das hilft jemandem von euch sich etwas Suche zu ersparen ;-)

  3. #3
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Du solltest aber besser über die Contao eigene Sessionverwaltung gehen.

    PHP-Code:
    $session = \Session::getInstance()
    $session->get('MPFORMSTORAGE'

  4. #4
    Contao-Fan Avatar von Cranker
    Registriert seit
    16.11.2009.
    Ort
    Taufkirchen
    Beiträge
    267
    Partner-ID
    6576

    Standard

    Hallo zusammen,

    ich versuche gerade auch ein paar Daten auf der letzten Seite des Formulars auszugeben.
    Leider bisher ohne Erfolg.

    Zitat Zitat von Brubbel Beitrag anzeigen
    PHP-Code:
    <?php echo $_SESSION['MPFORMSTORAGE'][1][0][submitted]['feldname']; ?>
    Da kommt leider bei mir kein Wert an.
    Die [1] steht wahrscheinlich für die Formular ID!?

    Meine Formular ID ist die 2, und ein Feldname ist z.B. email.
    Diese Werte werden auf der ersten Seite eingegeben, demnach müsste die Ausgabe doch folgendermaßen lauten:

    PHP-Code:
    <?php echo $_SESSION['MPFORMSTORAGE'][2][0][submitted]['email']; ?>
    Oder was mache ich falsch?
    Muss oberhalb von dieser Ausgabe noch etwas eingetragen werden damit die Werte abgerufen werden können?

    UPDATE
    Jetzt weiß ich was ich falsch mache - durch das Herumprobieren und testen war die Session tatsächlich leer...
    Es funktioniert genau so!

    Besten Dank für Hilfe!

    Thorsten
    Geändert von Cranker (23.03.2017 um 15:38 Uhr)
    V15* Thorsten Neuhaus
    Taufkirchen (München)


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

    Standard DANKE

    Hallo Thorsten,

    da ich mit meinem Projekt (Formular mit drei Seiten) fast fertig bin und Du mir mit dem Tipp zu MP_Forms entscheidend weitergeholfen hast, DANKE!
    Ich habe jetzt alle Angaben aus dem Formular nach Deinem Muster aufgelistet, mit <div>, <p> und <span> verschönert. Damit hat der User eine schöne Übersicht der eingegebenen Daten, bevor er auf absenden drückt.
    Das einzige, was nicht gelingen will (und vermutlich nicht geht) ist die Ausgabe der E-Mail-Adresse (oder eines anderen Feldinhaltes) nach Absenden des Formulars - im Sinne von "Vielen Dank für Ihre Eingaben! Sie erhalten in Kürze eine Bestätigungsmail an folgende Adresse: xyz@yx.de."

    Einen schönen Tag,
    Daniel

  6. #6
    Contao-Fan Avatar von Cranker
    Registriert seit
    16.11.2009.
    Ort
    Taufkirchen
    Beiträge
    267
    Partner-ID
    6576

    Standard

    Hallo Daniel,

    schau dir mal inputvar an.
    Damit kannst du den einen Wert sicher auch auf die "Danke-"Seite bekommen.

    Schönes Wochenende
    Thorsten
    V15* Thorsten Neuhaus
    Taufkirchen (München)


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

    Standard

    Hallo Thorsten,

    Inputvar kenne ich und hatte ich u. a. bisher mit efg im Einsatz.
    Mit dieser Erweiterung habe ich alles ausprobiert (auch die eher unlogischen Sachen). Mir scheint, dass MP_Forms die Sessions mit dem Abschicken des Formulars leert (was ja aus Sicherheitsgründen genau richtig ist). Oder habe ich hier ein Knoten im Gehirn und bin die Sache nur (gedanklich) falsch angegangen?

    Dir auch ein schönes Wochenende,
    Daniel

  8. #8
    Contao-Fan Avatar von Cranker
    Registriert seit
    16.11.2009.
    Ort
    Taufkirchen
    Beiträge
    267
    Partner-ID
    6576

    Standard

    Hallo,

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Mir scheint, dass MP_Forms die Sessions mit dem Abschicken des Formulars leert (was ja aus Sicherheitsgründen genau richtig ist). Oder habe ich hier ein Knoten im Gehirn und bin die Sache nur (gedanklich) falsch angegangen?
    Die Löschung der Session klingt für mich auch nach einer guten Idee, aber wenn du einen Schritt vorher die benötigte Variable mit inputvar "rettest" und in die URL schreibst, benötigst du die Session ja nicht mehr. Ich habe leider gerade keine Zeit das Problem nachzubauen und zu testen. Das wäre aber das was ich versuchen würde ;-)

    Schönen Sonntag
    Thorsten
    V15* Thorsten Neuhaus
    Taufkirchen (München)


  9. #9
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard Value bei Checkbox und Radio-Buttons

    Hallo,

    weiß jemand, wie ich mit dieser Erweiterung in der Zusammenfassung die ausgewählten Sachen aus Selectmenüs, Checkboxen und Radio-Buttons ausgeben kann?

    Außerdem möchte ich es alle ausgefüllten Felder durch eine Schleife automatisch ausgeben. Ich hoffe, dass es möglich ist.

    Momentan habe ich so etwas

    PHP-Code:
    <ul>
    <?php foreach ($fields as $field): ?>
        <li><?php echo $_SESSION['MPFORMSTORAGE'][$this->formId][0][submitted]['anzeigenprogrammheft']; ?></li>
    <?php endforeach ?>
    </ul>

  10. #10
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von jenda Beitrag anzeigen

    Außerdem möchte ich es alle ausgefüllten Felder durch eine Schleife automatisch ausgeben. Ich hoffe, dass es möglich ist.
    Generell gibt es dazu in folgendem Ticket ein paar Infos: https://github.com/terminal42/contao-mp_forms/issues/21

  11. #11
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard

    Danke. Allerdings sehe ich da keine Lösung dafür.

  12. #12
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Im letzten Kommentar von Toflar steht grob wie man das machen müsste. Ist halt ne Programmierung notwendig.

  13. #13
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard

    Zitat Zitat von cliffparnitzky Beitrag anzeigen
    Im letzten Kommentar von Toflar steht grob wie man das machen müsste. Ist halt ne Programmierung notwendig.
    Danke. Allerdings weiß ich leider nicht, wie ich da anfangen soll. Hattest du das schon etwas ausprobiert? Momentan kann ich nur das machen

    PHP-Code:
    <?php if ($_SESSION['MPFORMSTORAGE'][5][0][submitted]['anzeigenprogrammheft']): ?>
        <li>Anzeigen im Programmheft <span class="value"><?php echo $_SESSION['MPFORMSTORAGE'][5][0][submitted]['anzeigenprogrammheft']; ?></span></li>
    <?php endif ?>
    Hier der Link zur PHP-Klasse für die Speicherung aller Daten.
    Geändert von jenda (05.06.2019 um 09:23 Uhr)

  14. #14
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wie Toflar bei Github eben geschrieben hat: aktuell gibt es nix.

    Wir haben dort damals lediglich besprochen, wie man die Extension entsprechend erweitern kann um eine solche Funktion zur Verfügung zu stellen.

    Mit dem Template Code von dir wird man nicht weit kommen.

  15. #15
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard

    Zitat Zitat von cliffparnitzky Beitrag anzeigen
    Wie Toflar bei Github eben geschrieben hat: aktuell gibt es nix.

    Wir haben dort damals lediglich besprochen, wie man die Extension entsprechend erweitern kann um eine solche Funktion zur Verfügung zu stellen.

    Mit dem Template Code von dir wird man nicht weit kommen.
    Ja, das habe ich nun auch kapiert. :-) Toflar meinte, dass ich ein zusätzliches Feld haben müsste, wo ich es dann ausgebe. Man kann aber schon jetzt auf die Klasse zugreifen, über die man alle in der Sitzung gespeicherten Daten ausgeben könnte. Ich weiß leider momentan nicht, wie ich das umsetzen kann. Falls du da einen guten Ratschlag hast oder an der Umsetzung interessiert bist, sag mir bitte Bescheid. Gerne veröffentliche es hier.

    EFG hatte diese Funktion und man konnte das relativ einfach umsetzen. Ich habe mir den EFG-Code angeschaut, leider bin ich aber noch nicht so PHP-fit, um es zu übernehmen. Vielleicht hat da jemand einen Ansatz, der darauf basieren kann?
    Geändert von jenda (05.06.2019 um 10:45 Uhr)

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

    Standard Value bei Select und Checkbox - Ansatz mit switch/case u. forecach

    Hallo jenda,

    ich habe mir bei einem - etwas komplexen - Formular die Mühe gemacht, alles anzugeben. Ist zunächst mehr Aufwand, aber so bin ich sicher, dass der User auch wirklich in der Zusammenfassung die Infos erhält, die er versteht (und die wichtig sind). Außerdem kann ich so die Ausgabe der einzelenen Werte per CSS anders darstellen, was dann zum Aussehen der Seite besser passt …

    Hier ein Beispiel bei Checkboxen:
    PHP-Code:
    <p>Ich habe folgende Auswahl getroffen:</p>       
             <ul >
             <? if (isset($_SESSION['MPFORMSTORAGE'][2][1][submitted]['Checkbox_Fieldset'])){
                 foreach ($_SESSION['MPFORMSTORAGE'][2][1][submitted]['Checkbox_Fieldset'] as $value) {
                     if($value == 'Checkbox_Field1') 
                     echo '<li>Checkbox 1</li>';
                     elseif($value == 'Checkbox_Field2') 
                     echo '<li>Checkbox 2</li>';
                     elseif($value == 'Checkbox_Field3') 
                     echo '<li>Checkbox 3</li>';
                     elseif($value == 'Checkbox_Field4') 
                     echo '<li>Checkbox 4</li>';
                }          
             } 
           ?>
           </ul>
           <? endif ?>
    Für das Select-Feld bin ich dann über switch/case zu einem guten Ergebnis gekommen.
    Beispiel:
    PHP-Code:
    <p>Ich habe folgende Auswahl getroffen:</p> 
    <? switch($_SESSION['MPFORMSTORAGE'][2][1][submitted]['select_field1']){ 
                case '1';
                echo 'Situation 1';
                break;
                case '2';
                echo 'Situation 2';
                break;
                case '3';
                echo 'Situation 3';
                break;
                case '4';
                echo 'Situation 4';
                break;
                }
             ?>
    Vielleicht kannst Du es ja als Idee oder Anregung für Dein Vorhaben verwenden.

    Liebe Grüße
    Daniel

  17. #17
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    177

    Standard

    Ich verwende Contao 4.9 mit contao-mp_forms 4.3.2.

    Es gibt ja mittlerweile die Möglichkeit eine Zusammenfassung / Summary anzeigen zu lassen, was ich auf der letzten Formularseite auch mache.

    Nun würde ich gerne mit den Formularwerten der ersten / und zweiten Seite einfache Berechnungen machen und sie in der Zusammenfassung anzeigen.

    Beispiel: Im Formularfeld A steht eine Zahl und in Feld B ebenso. In der Zusammenfassung möchte ich die Summe dieser beiden Zahlen anzeigen lassen.

    Über ##form_*## kann ich ja nur die Werte direkt ausgeben, aber nicht "damit rechnen".

    Ich habe daher versucht in einem eigenen Template an die Eingabewerte zu kommen, aber mit

    PHP-Code:
    $_SESSION['MPFORMSTORAGE'][1][0][submitted]['feldname'
    funktioniert das nicht (mein Formular hat die ID 1 und "feldname" ist auf der ersten Seite).

    Über print_r($_SESSION) sehe ich, dass die Werte schon in der Session enthalten sind - wie komme ich denn da dran?

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

    Standard

    Hallo Steve!

    Ich habe dafür leider keine Lösung und habe mir mit einem Workaround üer JavaScript beholfen. D. h. ich nutze die "Weiter-Schaltfläche" um ein Script mit den Berechnungen durchzuführen. Damit habe ich dann Ergebnisse in versteckten Feldern, die ich am Ende in der Übersicht anzeigen lassen kann. Zudem habe ich die Werte dann auch für die Bestätigungsmail "greifbar". Das Formularfeld "Zusammenfassung" ist genial - Danke dafür -, aber damit lässt sich leider nicht alles abbilden wie früher.

    Trotzdem würde mich auch interessieren, warum es nicht mehr möglich ist, die $_SESSION['MPFORMSTORAGE'] auszugeben. Die Werte sind ja vorhanden …

    Liebe Grüße
    Daniel

  19. #19
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.450
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich hab das in dem Fall so gemacht, dass ich mir einen Inserttag erstellt habe. Dem werden die Werte von zwei Feldern mit "##form_....##" übergeben. Dann wird der errechnete Wert zurück gegeben.

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

    Standard

    Zitat Zitat von cliffparnitzky Beitrag anzeigen
    Ich hab das in dem Fall so gemacht, dass ich mir einen Inserttag erstellt habe. Dem werden die Werte von zwei Feldern mit "##form_....##" übergeben. Dann wird der errechnete Wert zurück gegeben.
    Danke für den Gedankenanstoß mit dem Inserttag … Bevor ich mich aber an die Erstellung eines eigenen Inserttag gemacht habe, habe ich mir noch mal den Readme-Text der Erweiterung durchgelesen - https://github.com/terminal42/contao-mp_forms (hätte ich schon eher machen sollen).
    {{mp_forms::<form id>::field_value::<field_name>}} => Contains the submitted value of a previous field
    Für die Ausgabe von Ländernamen (statt dem ISO-Code) hatte ich bisher noch keine Idee. Zumal es dafür ja eine "Contao-eigene" Lösung gibt.
    @cliffparnitzky Dank Deines Hinweis habe ich jetzt folgende PHP im Formular eingebunden. Vielleicht kann es ja auch anderen helfen …

    PHP-Code:
    <?php
    $arrCountries 
    $this->getCountries(); // Umwandlung der Länder-Codes in die ausführliche Beschreibung
    $iso = \Controller::replaceInsertTags("{{mp_forms::1::field_value::country}}"); // Übernahme des ISO-Name des Landes aus dem Formular (ID = 1, Feldname = country)
    echo $arrCountries[$iso]; //Ausgabe des Ländernamens in Langform - als 'Deutschland' statt 'de'
    Schönes Wochenende,
    Daniel

    P.S.: Bin immer noch daran interessiert, warum es nicht mehr möglich ist, die $_SESSION['MPFORMSTORAGE'] auszugeben …

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

    Standard

    Du könntest für die Summe ein verstecktes Feld anlegen und in dem Step wo die Ausgangsdaten eingegeben werden, per JS den Wert befüllen oder beim Wechsel des Steps per processFormData berechnen - letzteres ungetestet...

  22. #22
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    51

    Standard

    Hallo Leute,

    ich hatte bisher an verschiedenen Stellen über diese Form der Ausgabe, am Ende oder als Zwischenstand, die entsprechenden Werte ausgeben können:

    PHP-Code:
    $_SESSION['MPFORMSTORAGE'][1][0][submitted]['feldname'
    Nun ist uns bei einem Formular aufgefallen, dass der Prozess nicht mehr funktioniert und Fehler im Log erscheinen. Die Seite ist vor einigen Monaten von C4.9 auf C4.13 (aktuell 4.13.10) angehoben worden und MP_Forms läuft in der Version 4.4.0. Das Formular war etwas versteckt und es ist direkt nach dem Update nicht überprüft worden. Ich kann also nicht mit 100% Sicherheit sagen, ob es unmittelbar vor (oder nach) dem Wechsel noch ging.

    Fakt ist, dass wir diese Fehlermeldung im Contao Log erhalten:

    HTML-Code:
    [2022-10-06T21:18:02.205946+00:00] request.INFO: Matched route "tl_page.114". {"route":"tl_page.114","route_parameters":{"_token_check":true,"_controller":"Contao\\FrontendIndex::renderPage","_scope":"frontend","_locale":"de","_format":"html","_canonical_route":"tl_page.114","parameters":"","pageModel":{"Contao\\PageModel":[]},"_route":"tl_page.114","_route_object":{"Contao\\CoreBundle\\Routing\\Page\\PageRoute":[]}},"request_uri":"https://www.example.com/de/frabo-pdf-de.html","method":"POST"} []
    [2022-10-06T23:18:02.208112+02:00] security.INFO: Populated the TokenStorage with an anonymous Token. [] []
    [2022-10-06T21:18:02.247203+00:00] request.CRITICAL: Uncaught PHP Exception Error: "Undefined constant "submitted"" at /var/www/html/contao/templates/layout/ce_html_form_pdf.html5 line 63 {"exception":"[object] (Error(code: 0): Undefined constant \"submitted\" at /var/www/html/contao/templates/layout/ce_html_form_pdf_de.html5:63)"} []
    Wie man sieht, wird nun das obige "submitted" angemeckert und ich wollte mal fragen, ob das bei euch auch auftritt oder ob ihr eine Idee habt, warum diese Schreibweise nicht mehr funktioniert?

    Danke schon mal im voraus!

  23. #23
    Contao-Nutzer
    Registriert seit
    03.12.2014.
    Beiträge
    51

    Standard

    Ich hatte damals vergessen die Lösung zu posten ...

    Erfolg hatte ich am Ende mit der Umschreibung der Anweisungen auf Inserttags, so wie es in der Github-Doku (/terminal42/contao-mp_forms) auch geschrieben steht. Für das obige Beispiel in der alten Syntax:

    HTML-Code:
    {{mp_forms::1::field_value::feldname}}
    Vielleicht hilft es ja noch jemandem ;-)
    VG

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
  •