Vanilla 1.1.2 Forum von Lussumo. Weitere Informationen: Dokumentation, Community.

    • CommentAuthormic
    • CommentTime03.03.2010 bearbeitet
     permalink
    Hallo,

    ich habe per eForm ein Formular erstellt, das wie gewünscht funktioniert. Nun möchte ich aber die Dankesnachricht (&thankyou) nicht direkt im selben Fenster ausgeben, in dem sich auch das Kontaktformular befindet, sondern in einem eigenen Dokument (die Zielseite sollte nämlich für ein sauberes Conversion-Tracking eine eigene URL aufweisen). Leider ist mir das nicht gelungen.

    Ich verwende folgenden Aufruf im Formular:
    [!eForm? &formid=`feedbackForm` &to=`xy@xy.de` &tpl=`kontakt_template` &report=`kontakt_email` &thankyou=`kontakt_dankesnachricht` &gotoid=`3` &subject=`Anfrage auf xy.de`!]

    Auf der entsprechenden Zielseite wird das Chunk {{kontakt_dankesnachricht}} aufgerufen.
    Zwar werden an dieser Stelle nach Versenden des Formulars die im Chunk definierten Eingabefelder korrekt angezeigt, die tatsächlichen Eingaben des Users fehlen allerdings.

    Das Chunk {{kontakt_dankesnachricht}} beinhaltet folgende Angaben:
    <h3>Vielen Dank für Ihre E-Mail</h3>
    <p>
    Wir werden uns baldmöglichst mit Ihnen in Verbindung setzen.
    </p>
    <p>Ihre E-Mail:</p>
    <p>Name:<br />[+k_name+]</p>
    <p>E-Mail:<br />[+k_email+]</p>
    <p>Nachricht:<br />[+k_nachricht+]</p>


    Es würde mich sehr freuen, wenn mir jemand einen Tipp geben könnte, wie die Ausgabe der Dankesnachricht in einem neuen Dokument bewerkstelligt werden kann. Gibt es vielleicht ein gutes HowTo hierzu?

    Vielen Dank.
    •  
      CommentAuthorMarc
    • CommentTime03.03.2010
     permalink
    Probier mal:

    &thankyou=`3` &gotoid=`3`

    Und binde den Chunk in dem Dokument ein.
    • CommentAuthormic
    • CommentTime05.03.2010
     permalink
    Danke für den Hinweis. Das habe ich auch schon probiert. Leider hat es nicht funktioniert. Die Formularfelder werden dann zwar korrekt wiedergegeben, die Eingaben des Users aber nicht.
    •  
      CommentAuthorskipjack66
    • CommentTime16.05.2012
     permalink
    Hallo zusammen,

    ich hab das gleiche Problem. Leider ist auch im internationalen Forum nichs zu finden.

    Weiß jemand mehr darüber?

    Danke & Grüße!
    Marcus
    •  
      CommentAuthormanu37
    • CommentTime20.05.2012
     permalink
    Wenn ich den Code anschaue, heisst der paramenter nicht &gotoid=, sondern &gid=.
    Nur sind dann im Zieldokument die Feldinhalte nicht mehr verfügbar.
    •  
      CommentAuthorsam
    • CommentTime21.05.2012
     permalink
    Wenn ich den Code anschaue, heisst der paramenter nicht &gotoid=, sondern &gid=.
    Im eForm-Snippet 1.4.4.6, Ziele 57 steht: 'gid' => isset($gotoid)? $gotoid:$modx->documentIdentifier,Das bedeutet, dass der Parameter &gotoid heißt und als $params['gid'] in den Parameter-Array übergeben und von eForm verwendet wird. Wenn kein &gotoid-Parameter angegeben ist, wird die ID der aktuellen Ressource verwendet.

    Nur sind dann im Zieldokument die Feldinhalte nicht mehr verfügbar.
    Wenn die &gotoid nicht die ID der Ressource ist, von der der eForm-Aufruf erfolgt, dann werden die eForm-Platzhalter nicht in die Zielressource übernommen und der &thankyou-Parameter wird ignoriert. (siehe eform.inc.php, Zeile 553ff)


    Damit die Formularfelder auch in der umgeleiteten Ressource verwendet werden können, hier eine mögliche Lösung:
    Eine Funktion schreiben, welche die Formulardaten vor dem Versenden in eine globale Variable speichert und diese dann über ein Snippet in der thankyou-Ressource auslesen und in Platzhalter verwandeln.

    Beispiel:
    Snippet "onBeforeSent" anlegen<?php
    function setFormFields(&$fields) {
        global $modx;
        $modx->config['eFormFields'] = $fields;

        return true;
    }

    return;
    ?>
    in der Formular-Ressource vor dem eForm-Aufruf eintragen
    und dem eForm-Snippet-Aufruf den Parameter &eFormOnBeforeMailSent hinzufügen[!onBeforeSent!]
    [!eForm?
    ...
    &eFormOnBeforeMailSent=`setFormFields`
    !]

    Snippet "getFormFields" erstellen<?php
    $fields = array();
    foreach($modx->config['eFormFields'] as $key => $val) {
        $fields['[+'.$key.'+]'] = $val;
    }
    return str_replace(array_keys($fields), array_values($fields), $modx->getChunk($chunk));
    ?>
    und den Snippet-Aufruf in die Resource eintragen, welche über den &gotoid-Parameter aufgerufen wird[!getFormFields?chunk=`kontakt_dankesnachricht`!]
    Der &thankyou-Parameter wird dabei nicht benötigt.