¿Cómo muestro los datos de los formularios de gravedad en mi plantilla? [cerrado]

19

Prefacio

He instalado formularios de gravedad, he creado un formulario y los usuarios envían datos a mi sitio. Lo que quiero hacer es mostrar los datos que los usuarios envían a mi sitio en una de mis páginas.

Sé que hay el Gravity Forms Directory . Pero esto solo da una presentación de datos fija.

Pregunta

¿Hay algo en las formas de gravedad que pueda hacer algo como esto? (pseudo código) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
    
pregunta hitautodestruct 23.01.2013 - 16:04

3 respuestas

23

Puedes mirar los documentos, pero probablemente terminarás leyendo la documentación real : el código fuente.

Si lo haces, encontrarás que:

  • GFFormsModel::get_leads($form_id) devuelve una lista de entradas para un formulario (tal vez ya lo sepa), donde cada elemento de la matriz es una matriz, una " objeto de entrada "
  • GFFormsModel::get_form_meta($form_id) devuelve una lista de meta elementos del campo (es decir, describe el nombre, tipo, reglas, etc.) en el formulario, donde cada elemento de la matriz es un " Field object "

Una vez que tenga un objeto de entrada, puede acceder a los campos como elementos, por número de campo. Si necesita encontrar un campo por nombre o tipo, debe iterar sobre la lista de campos en el formulario para obtener una coincidencia, y luego acceder al campo de la entrada por ID de campo.

NB: la mejor manera de determinar el tipo de campo es pasar el elemento meta del campo a GFFormsModel::get_input_type($field)

Editar: tenga en cuenta también que solo se devuelven los primeros 200 caracteres de cada campo en el objeto Entrada. Si tiene campos que almacenan más información, deberá solicitarla, por ejemplo. llamando a GFFormsModel::get_field_value_long($lead, $field_number, $form) .

    
respondido por el webaware 24.01.2013 - 11:00
21

Gracias a webaware por su respuesta.

Aquí hay algo de copia / pasta para cualquiera que busque un inicio rápido. Esto toma una identificación de entrada y recupera la ventaja y la forma de eso. En este caso estoy usando la URL para pasar el valor. p.ej. 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>
    
respondido por el patnz 19.05.2013 - 01:22
1

Podría usar un gancho gform_after_submission para escribir todo lo que necesita en un tipo de publicación personalizado, que podría ser más fácil de manipular "en el campo" y estará a salvo de, por ejemplo, que alguien borre un solo campo y borre Todos los datos asociados a ella.

enlace

Yoast tiene una buena reseña al escribir en campos personalizados, sin siquiera usar el gancho. enlace

¡Buena suerte!

    
respondido por el GhostToast 24.01.2013 - 15:56

Lea otras preguntas en las etiquetas