Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gravity forms plugin - dynamically populating form field isn't working

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.

like image 301
user1832297 Avatar asked Nov 17 '12 18:11

user1832297


1 Answers

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.

like image 148
1joshyoung Avatar answered Sep 18 '22 15:09

1joshyoung