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.
Rather than having the form over multiple pages, you could use jQuery to create the impression of multiple pages with .hide
or .slideToggle
. This would resolve your problem and make the submitting of the form data much easier. Then simply call the value from past inputs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With