web-dev-qa-db-fra.com

Comment puis-je afficher les données de formulaires gravimétriques dans mon modèle?

Préface

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

Je sais qu'il existe le plugin Répertoire de formulaires Gravity . 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' ); ?>
20
hitautodestruct

Vous pouvez consulter la documentation, mais vous finirez probablement par lire le fichier real : 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 le connaissez déjà), où chaque élément du tableau est lui-même un tableau, un " objet 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.) sous la forme, chaque élément du tableau étant un " objet de champ "

Une fois que vous avez un objet Entrée, vous pouvez accéder aux champs en tant qu'éléments, par numéro de champ. Si vous devez rechercher un champ par son nom ou son 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 renvoyés dans l'objet Entrée. Si vous avez des champs qui stockent plus d'informations, vous devez les demander, par exemple. en appelant GFFormsModel::get_field_value_long($lead, $field_number, $form).

23
webaware

Merci à webaware pour sa 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 celui-ci. 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>
21
patnz

Vous pouvez utiliser un crochet gform_after_submission pour écrire tout ce dont vous avez besoin dans un type de message personnalisé, ce qui pourrait être plus facile à manipuler "dans le champ", et vous évitera, par exemple, que quelqu'un supprime un seul champ et efface toutes les données associées à il.

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

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

Bonne chance!

1
GhostToast