I'm having some problems with my Gravity Forms form. It's a multi page form, and I need to populate a field on page 2 using post values from page 1. But it's not working. Of course the field on page 2 is configured to "Allow field to be populated dynamically" and the field's parameter is set to "name". Here's my code:
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;
}
When I print the value of $name
variable using var_dump($name);
it's actually correct.
If I change the $name
to $name = 'Last Middle First';
it's populating the field as it should.
Thank you for your help.
EDIT: For test purposes I changed my code to:
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;
}
If I uncomment the line with var_dump
the value of variable $name
is again set correctly, but the field on page 2 is prepopulated with value Test
. Probably this filter is also called on page 1 so is it possible that the plugin caches this value? I don't use a caching plugin, so don't know why it's not working.
return
and the first page was already sent. – Umlaut