如何在模板中显示重力形式的数据?[关闭]


21

前言

我已经安装了重力表单,创建了表单,并且用户正在向我的站点提交数据。我要做的是在我的页面之一上显示用户提交到我的网站的数据。

我知道这里有Gravity Forms Directory插件。但这仅给出了固定的数据表示。

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

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


2
@GhostToast相信我,我完全梳理了文档,但是关于如何实现这一点没有任何信息。
hitautodestruct

1
未来的注意事项:这是一个明确用于在前端显示Gravity Forms数据的插件:gravityview.co
Dalton,

2
我敢打赌,如果我将这个问题发布在SO上,他们会告诉我将其发布在这里:-)另一个问题已经发生了一些事情
。.– hitautodestruct

Answers:


25

您可以看一下文档,但最终可能会读到真正的文档:源代码。

如果这样做,您会发现:

  • GFFormsModel::get_leads($form_id)返回表单的条目列表(也许您已经知道一个表单),其中数组中的每个项目本身就是一个数组,一个“ Entry object
  • GFFormsModel::get_form_meta($form_id)返回表单形式的字段元元素列表(即描述名称,类型,规则等),其中数组中的每个项目都是“ Field object

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

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

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


1
仅供参考,重力表单管理员也将此代码段发布为短代码pastebin.com/kHpaHQvi
hitautodestruct

21

感谢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>

1
您的代码很棒,但不能Advanced fieldsaddress或那样工作,first name/last name因为它们.用于拆分ID
RPDeshaies 2014年

也无法在chckboxes中使用。
numediaweb

如何获取张贴条目的用户信息?
约翰

1

您可以使用gform_after_submission钩子将所需的所有内容写入自定义帖子类型,这可能更易于“在字段中操作”,并且可以避免有人删除单个字段并抹去与之相关的所有数据。

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

Yoast在编写自定义字段方面有相当不错的写作,甚至不需要使用钩子。 http://yoast.com/gravity-forms-custom-post-types/

祝好运!


1
像这样复制数据似乎有点麻烦。
菲利克斯·夏娃
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.