9

我的重力表格表格有一些问题。这是一个多页表单,我需要使用第 1 页中的帖子值填充第 2 页上的字段。但它不起作用。当然,第 2 页上的字段配置为“允许动态填充字段”,并且该字段的参数设置为“名称”。这是我的代码:

add_filter('gform_field_value_name', 'name_population_function');
function name_population_function($value){
    $name = $_POST['input_2'] . ' ' . ( ! empty( $_POST['input_3'] ) ? ( $_POST['input_3'] . ' ' ) : NULL ) . $_POST['input_1'];
    return $name;
}

当我使用它打印$name变量的值时,var_dump($name);它实际上是正确的。

如果我将它更改$name$name = 'Last Middle First';它应该填充该字段。

谢谢您的帮助。

编辑:出于测试目的,我将代码更改为:

add_filter('gform_field_value_name', 'name_population_function');
function name_population_function($value){
    $name = 'Test';
    if ( ! empty( $_POST['input_1'] ) && ! empty( $_POST['input_2'] ) ) {
        $name = $_POST['input_2'] . ' ' . ( ! empty( $_POST['input_3'] ) ? ( $_POST['input_3'] . ' ' ) : NULL ) . $_POST['input_1'];
    //var_dump( $name );
    }
    return $name;
}

如果我取消注释带有var_dumpvariable 值的行$name再次正确设置,但第 2 页上的字段预填充了 value Test。可能在第 1 页上也调用了这个过滤器,所以插件是否有可能缓存这个值?我不使用缓存插件,所以不知道为什么它不起作用。

4

3 回答 3

1

.hide您可以使用 jQuery 使用或来创建多个页面的印象,而不是将表单放在多个页面上.slideToggle。这将解决您的问题并使表单数据的提交更加容易。然后简单地调用过去输入的值。

于 2014-06-28T13:36:57.697 回答
0

您可以使用查询字符串来保存数据并动态填充字段。

http://siteurl.com/form-url/?your_parameter=value

add_filter('gform_field_value_author_email', 'populate_post_author_email');
function populate_post_author_email($value){
global $post;

$author_email = get_the_author_meta('email', $post->post_author);

return $author_email;
}
于 2013-11-17T05:21:12.593 回答
-1

试试这个 gform_pre_render 过滤器。它为表单 ID 7 添加了一个过滤器。将 7 替换为您的 Gravity 表单的 ID。

add_filter('gform_pre_render_7', 'populate_form_pre_render');

function populate_form_pre_render($form){
  $name ='';
  foreach ($form['fields'] as &$field)
  {
     // replace 2 with the actual ID of your form field 
    if ( 2 == $field['id'] ){
      if ( ! empty( $_POST['input_1'] ) && ! empty( $_POST['input_2'] ) ) {
         $name = $_POST['input_2'] . ' ' . ( ! empty( $_POST['input_3'] ) ? ($_POST['input_3'] . ' ' ) : NULL ) . $_POST['input_1'];
        //var_dump( $name );
      }
      $field['defaultValue']=$name;
  echo '<pre>';
  print_r($field);
  echo '</pre>';
   }    

 }

 return $form;
}
于 2013-10-14T21:34:00.180 回答