'How to pre-select a selct box in Ninja Forms from a query string

I am trying to pre select a value within a select field in my contact from on the contact page from another page by passing a query string ?request=call-back. I am using Ninja Forms and the values that I have in my select field are: email-us, call-back

I have tried the following:

add_filter( 'ninja_forms_render_default_value', 'my_ninja_forms_pre_populate', 10, 3 );
function my_ninja_forms_pre_populate( $default_value, $field_type, $field_settings ){
    if( 'request' == $field_settings[ 'key' ] ){
        $default_value = $_GET['request'];
    }
    return $default_value;
}

I would like the select field to have call-back already selected.



Solution 1:[1]

I didnt need to use the filter that I was attempting. I changed the key value under administration within the ninja form builder and I made sure that none of the values were pre selected.

Solution 2:[2]

This drove me mad... but finally I've got a solution:

// register custom get parameter (to use it with get_query_var() for safety reasons)
function add_get_val() {
    global $wp;
    $wp->add_query_var('request');
}

add_action('init', 'add_get_val');

add_filter('ninja_forms_localize_field_listselect', function ($field) {
    if (get_query_var('request')) {
        $request = get_query_var('request');
        $optionExists = FALSE;

        // check if field exists
        foreach ($field['settings']['options'] as $option) {
            if ($option['value'] === $request) {
                $optionExists = TRUE;
                break;
            }
        }

        if ($optionExists) {
            foreach ($field['settings']['options'] as $key => $option) {
                // deselect all fields
                $field['settings']['options'][$key]['selected'] = 0;

                // select parameter
                if ($option['value'] === $request) {
                    $field['settings']['options'][$key]['selected'] = 1;
                }
            }
        }
    }

    return $field;
});

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ahmed Al-Samarrai
Solution 2 internerz