Gravity Forms Multipage Form,基于唯一键从现有表单条目动态填充

问题描述 投票:0回答:2

我正在为一所学校的一对表格使用Gravity Forms(WordPress)。他们有申请的初始表格。每个提交都会分配一个唯一的五个字符键来识别它。这将保存在隐藏字段中。此表单包含姓名,电子邮件,电话,地址等内容。此表单已启动并正常运行,运行良好。

一旦学生被录取,我们现在需要另一个注册表格。这个表单将是一个多页表单,其中包含更多详细信息和有关历史/父母等的各种问题。我的想法是,第一页包含一个字段,要求分配给其应用程序的密钥。提交第一页后,表单将根据密钥查询数据库,并返回原始应用程序中适用于第二个表单的任何信息。因此,不必手动重新输入名称,电子邮件,电话等内容。

我开始走动态人口的道路并遇到麻烦。看起来在多页表单上的操作方式不同,取决于您是否使用AJAX。有没有人有过对表单填充进行这种键查找的经验?我可以在vanilla PHP / MySQL中做到这一点没有问题,但Gravity Forms的东西让我感到难过。

wordpress gravity-forms-plugin
2个回答
0
投票

你的问题不够明确,可以解释。但是,由于我遇到了多页重力形式的问题,并且在网上找不到什么帮助,这是我的经验。

如果从一个页面转到下一个页面,则可以使用rgpost("input_" . YOUR_FIELD_ID);访问先前页面中的字段值。复选框集合由“input _”访问。场_ID。“_”。OPTION_INDEX。根据我的经验,动态填充的下拉似乎被重置。如果发生这种情况,在移动到下一页之前,您可以将这些字段中的任何值复制到隐藏字段中,并从隐藏字段中读取。

即使触发了相应的挂钩,也不会更新已具有默认值(field->defaultValue)的字段。例如:add_filter('gform_field_value_my_field', 'populate_your_field')。在populate_your_field中返回的值的转储将显示与检查my_field时不同的值,my_field应该接收此值。 my_field将保留它收到的第一个值,不再改变。

当您的字段依赖于先前页面的字段输入,并且用户来回更改这些字段时,这是一个问题。您的dependend字段不会在任何钩子上更新。我已经使用gform_field_value,gform_pre_render,gform_field_validation和gform_post_paging进行了广泛测试。

我找到了一个解决方案:在gform_pre_render挂钩中使用数据属性回显隐藏的div,并通过javascript填充字段。

add_filter('gform_pre_render', 'dynamic_population', 10, 1); function dynamic_population($form) { echo "<div id='my_data' style='display:none' data-myjsonarray='.json_encode(my_json_array).'></div>"; }

在重力形式中,您可以创建一个html字段并在其中添加javascript。

<script> window.onload = function() { //custom function that fills given gform dropdown with given array fill_dropdown( jQuery('#input_1_1'), jQuery('#my_data').data('myjsonarray') ); } </script>

希望这能以某种方式帮助某人。


0
投票

Gravity Forms Populate Anything可以很好地处理这个问题。

  1. 在表单中添加一个字段,用户可以在其中输入其参考编号。
  2. 根据提供的引用ID配置要使用条目数据填充的字段,该引用数据与具有相同引用ID的条目匹配:
© www.soinside.com 2019 - 2024. All rights reserved.