wake-up-neo.com

Wie zeige ich Daten aus Schwerkraftformularen in meiner Vorlage an?

Vorwort

Ich habe Schwerkraftformulare installiert, ein Formular erstellt und Benutzer senden Daten an meine Site. Ich möchte lediglich auf einer meiner Seiten anzeigen, welche Daten Benutzer auf meiner Website einreichen.

Ich weiß, dass es das Gravity Forms Directory Plugin gibt. Dies ergibt aber nur eine feste Datenpräsentation.

Frage

Gibt es etwas in Schwerkraftformen, die so etwas tun können? (Pseudocode) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
20
hitautodestruct

Sie können sich die Dokumente ansehen, aber Sie werden wahrscheinlich am Ende die real -Dokumentation lesen: den Quellcode.

Wenn Sie dies tun, werden Sie feststellen, dass:

  • GFFormsModel::get_leads($form_id) gibt eine Liste von Einträgen für ein Formular zurück (vielleicht wissen Sie das schon), wobei jedes Element im Array selbst ein Array ist, ein " Entry object "
  • GFFormsModel::get_form_meta($form_id) gibt eine Liste von Feldmetaelementen (d. h. beschreibt Namen, Typ, Regeln usw.) im Formular zurück, wobei jedes Element im Array ein " Feldobjekt " ist.

Sobald Sie ein Eintragsobjekt haben, können Sie über die Feldnummer als Elemente auf die Felder zugreifen. Wenn Sie ein Feld nach Name oder Typ suchen müssen, müssen Sie die Liste der Felder im Formular durchlaufen, um eine Übereinstimmung zu erhalten, und dann nach Feld-ID auf das Feld des Eintrags zugreifen.

Hinweis: Die Bestimmung des Feldtyps erfolgt am besten, indem das Metaelement des Felds an GFFormsModel::get_input_type($field) übergeben wird.

Bearbeiten: Beachten Sie auch, dass nur die ersten 200 Zeichen jedes Felds im Entry-Objekt zurückgegeben werden. Wenn Sie Felder haben, in denen weitere Informationen gespeichert sind, müssen Sie danach fragen, z. durch Aufrufen von GFFormsModel::get_field_value_long($lead, $field_number, $form).

23
webaware

Vielen Dank an webaware für die Antwort.

Hier ist eine Kopie/Pasta für alle, die einen schnellen Einstieg suchen. Dieser nimmt eine Eintrags-ID und ruft daraus den Lead und das Formular ab. In diesem Fall verwende ich die URL, um den Wert zu übergeben. z.B. somedomain.com?entry=123.

<?php 
    $lead_id = $_GET['entry'];
    $lead = RGFormsModel::get_lead( $lead_id ); 
    $form = GFFormsModel::get_form_meta( $lead['form_id'] ); 

    $values= array();

    foreach( $form['fields'] as $field ) {

        $values[$field['id']] = array(
            'id'    => $field['id'],
            'label' => $field['label'],
            'value' => $lead[ $field['id'] ],
        );
    }
?>
<pre><?php print_r($values); ?></pre>
21
patnz

Sie könnten einen gform_after_submission-Hook verwenden, um alles, was Sie brauchen, in einen benutzerdefinierten Beitragstyp zu schreiben, der möglicherweise einfacher "draußen" zu manipulieren ist und der sicher ist, dass beispielsweise niemand ein einzelnes Feld löscht und alle damit verbundenen Daten verwischt es.

http://www.gravityhelp.com/documentation/page/Gform_after_submission

Yoast hat eine ziemlich gute Erfahrung mit dem Schreiben in benutzerdefinierte Felder, ohne den Haken zu benutzen. http://yoast.com/gravity-forms-custom-post-types/

Viel Glück!

1
GhostToast