Comment afficher les données des formes de gravité dans mon modèle? [fermé]

21

Préface

J'ai installé des formulaires gravitaires, créé un formulaire et les utilisateurs soumettent des données à mon site. Ce que je veux faire, c'est montrer les données que les utilisateurs soumettent à mon site sur une de mes pages.

Je sais qu'il y a le plugin Gravity Forms Directory . Mais cela ne donne qu'une présentation de données fixe.

Question

Y a-t-il quelque chose dans les formes de gravité qui peut faire quelque chose comme ça? (pseudo code) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
hitautodestruct
la source
2
@GhostToast Croyez-moi, j'ai complètement peigné les documents et il n'y a aucune information sur la façon d'y parvenir.
hitautodestruct
1
Note du futur: voici un plugin qui est explicitement pour afficher les données de Gravity Forms sur le front-end: gravityview.co
Dalton
2
Je parie que si je posais cette question sur SO, ils me diraient de la poster ici :-) Quelque chose qui s'est déjà produit avec une autre question ..
hitautodestruct

Réponses:

25

Vous pouvez consulter la documentation, mais vous finirez probablement par lire la vraie documentation: le code source.

Si vous le faites, vous constaterez que:

  • GFFormsModel::get_leads($form_id)renvoie une liste d'entrées pour un formulaire (peut-être que vous en connaissez déjà une), où chaque élément du tableau est lui-même un tableau, un " objet d'entrée "
  • GFFormsModel::get_form_meta($form_id)renvoie une liste de méta-éléments de champ (c'est-à-dire décrit le nom, le type, les règles, etc.) dans le formulaire, où chaque élément du tableau est un " objet de champ "

Une fois que vous avez un objet Entry, vous pouvez accéder aux champs en tant qu'éléments, par numéro de champ. Si vous devez rechercher un champ par nom ou type, vous devez parcourir la liste des champs du formulaire pour obtenir une correspondance, puis accéder au champ de l'entrée par ID de champ.

NB: il est préférable de déterminer le type d'un champ en passant le méta-élément du champ à GFFormsModel::get_input_type($field)

Edit: notez également que seuls les 200 premiers caractères de chaque champ sont retournés dans l'objet Entry. Si vous avez des champs qui contiennent plus d'informations, vous devrez les demander, par exemple en appelant GFFormsModel::get_field_value_long($lead, $field_number, $form).

connaissance du Web
la source
1
Pour info, un administrateur de Gravity Forms a également publié cet extrait pour un shortcode pastebin.com/kHpaHQvi .
hitautodestruct
21

Merci à Webaware pour leur réponse.

Voici quelques copies / pâtes pour ceux qui recherchent un démarrage rapide. Cela prend un ID d'entrée et récupère le prospect et le formulaire à partir de cela. Dans ce cas, j'utilise l'URL pour transmettre la valeur. par exemple 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
la source
1
Votre code est génial mais ne fonctionnera pas Advanced fieldscomme le addressou le first name/last namecar ils utilisent .pour diviser leur ID
RPDeshaies
Ne fonctionnera pas non plus dans les chckboxes.
numediaweb
Comment obtenir les informations utilisateur qui publient l'entrée?
John
1

Vous pouvez utiliser un gform_after_submissioncrochet pour écrire tout ce dont vous avez besoin dans un type de publication personnalisé, qui pourrait être plus facile à manipuler "sur le terrain", et sera à l'abri, par exemple, de la suppression d'un seul champ et de l'effacement de toutes les données qui lui sont associées .

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

Yoast a une assez bonne rédaction sur l'écriture dans des champs personnalisés, sans même utiliser le crochet. http://yoast.com/gravity-forms-custom-post-types/

Bonne chance!

GhostToast
la source
1
La duplication de données comme celle-ci semble un peu désagréable.
Felix Eve