问题描述

Preface

我已经安装了重力表格,创建了一个表单,用户正在将数据提交到我的网站。我想做的是显示用户在我的一个页面上提交给我的网站的数据。

我知道有 Gravity Forms Directory 插件。但这只会给出一个固定的数据显示。

Question

有什么重力形式可以做这样的事情吗? (伪代码):

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>

最佳解决方案

您可以查看文档,但您可能会最终阅读真实文档:源代码。

如果你这样做,你会发现:

  • GFFormsModel::get_leads($form_id)返回一个表单的条目列表 (也许你已经知道了一个),其中数组中的每个项目本身都是一个数组,「Entry object

  • GFFormsModel::get_form_meta($form_id)返回表单中的字段元素列表 (即描述名称,类型,规则等),其中数组中的每个项目都是 「Field object

一旦你有一个 Entry 对象,你可以通过字段号来访问这些字段作为元素。如果您需要按名称或类型查找字段,则需要遍历表单中的字段列表以获取匹配项,然后按字段 ID 访问条目的字段。

注意:确定字段的类型最好通过将字段的元素传递给 GFFormsModel::get_input_type($field)

编辑:还要注意,在 Entry 对象中只返回每个字段的前 200 个字符。如果您有字段存储更多信息,则需要询问。通过调用 GFFormsModel::get_field_value_long($lead, $field_number, $form)

次佳解决方案

感谢 webaware 的答案。

这里有一些复制/意大利面,任何人想要快速开始。这需要一个条目 ID,并从中检索引导和表单。在这种情况下,我使用该 URL 传递该值。例如 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>

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。