Como mostro dados de formulários de gravidade no meu modelo? [fechadas]

19

Prefácio

Instalei formulários de gravidade, criei um formulário e os usuários estão enviando dados para o meu site. O que eu quero fazer é mostrar os dados que os usuários estão enviando para o meu site em uma das minhas páginas.

Eu sei que existe o plugin Gravity Forms Directory . Mas isso fornece apenas uma apresentação de dados fixa.

Pergunta

Existe alguma coisa em formas de gravidade que possa fazer algo assim? (pseudo código) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
    
por hitautodestruct 23.01.2013 / 16:04
fonte

3 respostas

23

Você pode ver os documentos, mas provavelmente acabará lendo a documentação real : o código-fonte.

Se fizer isso, você descobrirá que:

  • GFFormsModel::get_leads($form_id) retorna uma lista de entradas para um formulário (talvez você já o conheça), em que cada item do array é ele mesmo um array, um " Objeto de entrada "
  • GFFormsModel::get_form_meta($form_id) retorna uma lista de meta elementos de campo (ou seja, descreve nome, tipo, regras etc.) no formulário, onde cada item da matriz é um " Objeto de campo "

Quando você tiver um objeto Entrada, poderá acessar os campos como elementos, por número de campo. Se você precisar encontrar um campo por nome ou tipo, precisará iterar sobre a lista de campos no formulário para obter uma correspondência e, em seguida, acessar o campo da entrada por ID de campo.

NB: determinar melhor o tipo de um campo é passar o elemento meta do campo para GFFormsModel::get_input_type($field)

Editar: observe também que apenas os primeiros 200 caracteres de cada campo são retornados no objeto Entrada. Se você tiver campos que armazenam mais informações, precisará solicitá-las, por exemplo, chamando GFFormsModel::get_field_value_long($lead, $field_number, $form) .

    
por webaware 24.01.2013 / 11:00
fonte
21

Obrigado ao webware pela resposta.

Aqui estão algumas cópias / massas para quem procura um começo rápido. Isso leva um ID de entrada e recupera o lead e o formulário a partir dele. Neste caso, estou usando o URL para passar o valor. por exemplo. 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>
    
por patnz 19.05.2013 / 01:22
fonte
1

Você pode usar um gancho gform_after_submission para escrever tudo o que precisa em um tipo de postagem personalizado, que pode ser mais fácil de manipular "em campo" e estará a salvo de alguém excluindo um único campo e eliminando todos os dados associados a ele.

enlace

O Yoast tem um ótimo writeup ao escrever em campos personalizados, sem usar o hook. enlace

Boa sorte!

    
por GhostToast 24.01.2013 / 15:56
fonte