Bagaimana cara menampilkan data dari bentuk gravitasi di templat saya? [Tutup]

21

Kata pengantar

Saya telah menginstal formulir gravitasi, membuat formulir, dan pengguna mengirimkan data ke situs saya. Yang ingin saya lakukan adalah menunjukkan data yang dikirimkan pengguna ke situs saya di salah satu halaman saya.

Saya tahu ada plugin Direktori Gravity Forms . Tetapi ini hanya memberikan presentasi data tetap.

Pertanyaan

Apakah ada sesuatu dalam bentuk gravitasi yang dapat melakukan hal seperti ini? (kode semu) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
hitautodestruct
sumber
2
@ GhostToast Percayalah, saya menyisir dokumen sepenuhnya dan tidak ada informasi tentang cara mencapai ini.
hitautodestruct
1
Catatan dari masa depan: inilah plugin yang secara eksplisit menampilkan data Gravity Forms di front-end: gravityview.co
Dalton
2
Saya bertaruh bahwa jika saya memposting pertanyaan ini pada SO mereka akan memberitahu saya untuk mempostingnya di sini :-) Sesuatu yang telah terjadi dengan pertanyaan lain ..
hitautodestruct

Jawaban:

25

Anda dapat melihat dokumen, tetapi Anda mungkin akhirnya akan membaca dokumentasi nyata : kode sumber.

Jika ya, Anda akan menemukan bahwa:

  • GFFormsModel::get_leads($form_id)mengembalikan daftar entri untuk formulir (mungkin Anda sudah tahu itu), di mana setiap item dalam array itu sendiri adalah sebuah array, sebuah " objek entri "
  • GFFormsModel::get_form_meta($form_id)mengembalikan daftar elemen meta bidang (yaitu menggambarkan nama, jenis, aturan dll.) dalam bentuk, di mana setiap item dalam array adalah " objek bidang "

Setelah Anda memiliki objek entri, Anda bisa mengakses bidang sebagai elemen, dengan nomor bidang. Jika Anda perlu menemukan bidang berdasarkan nama atau jenis, Anda perlu mengulangi daftar bidang dalam formulir untuk mendapatkan kecocokan, dan kemudian mengakses bidang entri dengan ID bidang.

NB: menentukan jenis bidang paling baik dilakukan dengan meneruskan elemen meta bidang ke GFFormsModel::get_input_type($field)

Sunting: perhatikan juga bahwa hanya 200 karakter pertama dari masing-masing bidang dikembalikan dalam objek entri. Jika Anda memiliki bidang yang menyimpan lebih banyak informasi, Anda harus memintanya, misalnya dengan menelepon GFFormsModel::get_field_value_long($lead, $field_number, $form).

sadar web
sumber
1
FYI, admin A Gravity Forms memposting cuplikan ini untuk shortcode pastebin.com/kHpaHQvi juga.
hitautodestruct
21

Terima kasih kepada webaware untuk jawaban mereka.

Berikut ini beberapa salinan / pasta untuk siapa saja yang mencari awal yang cepat. Ini mengambil ID entri dan mengambil lead dan form dari itu. Dalam hal ini saya menggunakan URL untuk meneruskan nilai. mis. 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
sumber
1
Kode Anda bagus tetapi tidak akan berfungsi Advanced fieldsseperti addressatau first name/last namekarena mereka gunakan .untuk membagi ID mereka
RPDeshaies
Juga tidak akan berfungsi di kotak kotak.
numediaweb
Bagaimana cara mendapatkan info pengguna yang memposting entri?
John
1

Anda bisa menggunakan gform_after_submissionpengait untuk menulis semua yang Anda butuhkan ke jenis pos kustom, yang mungkin lebih mudah untuk memanipulasi "di lapangan", dan akan aman dari, katakanlah, seseorang menghapus satu bidang dan menghapus semua data yang terkait dengannya .

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

Yoast memiliki penulisan yang cukup baik pada penulisan ke bidang kustom, tanpa menggunakan kait. http://yoast.com/gravity-forms-custom-post-types/

Semoga berhasil!

GhostToast
sumber
1
Duplikasi data seperti ini sepertinya agak jahat.
Felix Eve