Come visualizzare i dati di Gravity Forms nel mio template?

23 gen 2013, 17:04:55
Visualizzazioni: 67.5K
Voti: 22

Premessa

Ho installato Gravity Forms, creato un form e gli utenti stanno inviando dati al mio sito. Quello che voglio fare è mostrare i dati che gli utenti stanno inviando al mio sito in una delle mie pagine.

So che esiste il plugin Gravity Forms Directory. Ma questo fornisce solo una presentazione dei dati fissa.

Domanda

C'è qualcosa in Gravity Forms che può fare qualcosa del genere? (pseudo codice):

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
4
Commenti

@GhostToast Credimi, ho esaminato completamente la documentazione e non c'è alcuna informazione su come ottenere questo risultato.

hitautodestruct hitautodestruct
24 gen 2013 13:48:24

Nota dal futuro: ecco un plugin appositamente creato per visualizzare i dati di Gravity Forms in front-end: https://gravityview.co/

Dalton Rooney Dalton Rooney
6 ago 2014 01:11:36

Scommetto che se postassi questa domanda su SO mi direbbero di postarla qui :-) Qualcosa che è già successo con un'altra domanda..

hitautodestruct hitautodestruct
26 feb 2017 11:45:00
Tutte le risposte alla domanda 3
1
25

Puoi consultare la documentazione, ma probabilmente finirai per leggere la documentazione reale: il codice sorgente.

Se lo fai, scoprirai che:

  • GFFormsModel::get_leads($form_id) restituisce un elenco di voci per un modulo (forse lo conosci già), dove ogni elemento dell'array è a sua volta un array, un "Oggetto Entry"
  • GFFormsModel::get_form_meta($form_id) restituisce un elenco di elementi meta dei campi (cioè descrive nome, tipo, regole ecc.) nel modulo, dove ogni elemento dell'array è un "Oggetto Field"

Una volta che hai un oggetto Entry, puoi accedere ai campi come elementi, tramite il numero del campo. Se hai bisogno di trovare un campo per nome o tipo, devi iterare sull'elenco dei campi nel modulo per ottenere una corrispondenza, e poi accedere al campo della voce tramite l'ID del campo.

NB: determinare il tipo di un campo è meglio farlo passando l'elemento meta del campo a GFFormsModel::get_input_type($field)

Modifica: nota anche che solo i primi 200 caratteri di ogni campo vengono restituiti nell'oggetto Entry. Se hai campi che memorizzano più informazioni, dovrai richiederle, ad esempio chiamando GFFormsModel::get_field_value_long($lead, $field_number, $form).

24 gen 2013 12:00:13
Commenti

Per tua informazione, un amministratore di Gravity Forms ha pubblicato questo snippet per uno shortcode http://pastebin.com/kHpaHQvi anche.

hitautodestruct hitautodestruct
29 gen 2013 11:27:57
3
21

Grazie a webaware per la loro risposta.

Ecco del codice pronto per chi cerca una soluzione rapida. Questo codice prende un ID di entry e recupera i dati principali e il form associato. In questo caso sto usando l'URL per passare il valore, ad esempio: miosito.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>
19 mag 2013 02:22:58
Commenti

Il tuo codice è ottimo ma non funzionerà per i campi avanzati come l'indirizzo o il nome/cognome poiché utilizzano il . per separare il loro ID

RPDeshaies RPDeshaies
30 set 2014 21:58:19

Inoltre non funzionerà con i checkbox.

numediaweb numediaweb
19 lug 2015 14:35:21

Come ottenere le informazioni dell'utente che ha inviato la voce?

John John
10 feb 2016 17:32:59
1

Potresti utilizzare un hook gform_after_submission per scrivere tutto ciò che ti serve in un custom post type, il che potrebbe essere più facile da manipolare "sul campo", e sarà al sicuro da, ad esempio, qualcuno che cancella un singolo campo e cancella tutti i dati associati ad esso.

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

Yoast ha una buona guida su come scrivere nei custom fields, senza nemmeno usare l'hook. http://yoast.com/gravity-forms-custom-post-types/

Buona fortuna!

24 gen 2013 16:56:39
Commenti

Duplicare i dati in questo modo sembra un po' sgradevole.

Felix Eve Felix Eve
18 set 2014 10:01:37