Wie zeige ich Daten aus Schwerkraftformularen in meiner Vorlage an? [geschlossen]

21

Vorwort

Ich habe Schwerkraftformulare installiert, ein Formular erstellt und Benutzer senden Daten an meine Site. Ich möchte 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 irgendetwas in Schwerkraftformen, das so etwas bewirken kann? (Pseudocode) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
hitautodestruct
quelle
2
@ GhostToast Glauben Sie mir, ich habe die Dokumente vollständig gekämmt und es gibt keine Informationen darüber, wie dies erreicht werden kann.
hitautodestruct
1
Hinweis aus der Zukunft: Hier ist ein Plugin, das explizit für die Anzeige von Gravity Forms-Daten im Front-End vorgesehen ist: gravityview.co
Dalton
2
Ich wette, wenn ich diese Frage auf SO posten würde, würde man mich
bitten,

Antworten:

25

Sie können sich die Dokumente ansehen, aber Sie werden wahrscheinlich die eigentliche 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 (möglicherweise kennen Sie das bereits), wobei jedes Element im Array selbst ein Array ist, ein " Eintragsobjekt ".
  • GFFormsModel::get_form_meta($form_id)Gibt eine Liste von Feldmetaelementen (dh 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 übergeben wird GFFormsModel::get_input_type($field)

Bearbeiten: Beachten Sie auch, dass nur die ersten 200 Zeichen jedes Felds im Eintragsobjekt zurückgegeben werden. Wenn Sie Felder haben, in denen weitere Informationen gespeichert sind, müssen Sie diese anfordern, z GFFormsModel::get_field_value_long($lead, $field_number, $form). B. durch einen Anruf .

webaware
quelle
1
Zu Ihrer Information, ein Gravity Forms-Administrator hat dieses Snippet auch für einen Shortcode pastebin.com/kHpaHQvi gepostet .
hitautodestruct
21

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. zB 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>
patnz
quelle
1
Ihr Code ist großartig, funktioniert aber nicht Advanced fieldswie der addressoder der, first name/last nameda sie .ihre ID
aufteilen
Funktioniert auch nicht in Chckboxen.
numediaweb
Wie erhalte ich die Benutzerinformationen, die den Eintrag posten?
John
1

Sie können einen gform_after_submissionHook verwenden, um alles, was Sie benötigen, in einen benutzerdefinierten Beitragstyp zu schreiben. Dieser ist möglicherweise einfacher zu manipulieren, da er beispielsweise vor dem Löschen eines einzelnen Felds und dem Löschen aller damit verbundenen Daten sicher ist .

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!

GhostToast
quelle
1
Das Duplizieren von Daten wie diesen scheint ein bisschen unangenehm zu sein.
Felix Eve