Dynamically created set of fields not saved [RESOLVED]

I’m trying to create new fields (single products) for my form dynamically from a custom post type. That works quite well in the frontend. Now, the issue with this is that, once the form is submitted, all the fields EXCEPT these dynamically added ones are in the submission and NOT getting saved.

I’ve tried those filters with no result:
add_filter( ‘gform_form_post_get_meta_1’, ‘populate_beers’); //needed for population
add_filter( ‘gform_pre_render_2’, ‘populate_beers’ );
add_filter( ‘gform_pre_validation_2’, ‘populate_beers’ );
add_filter( ‘gform_pre_submission_filter_2’, ‘populate_beers’ );
add_filter( ‘gform_admin_pre_render_2’, ‘populate_beers’ );

Here’s the code snipped i use in my functions.php
function populate_beers($form) {

					$new_field_id = 0;
					    foreach( $form['fields'] as $field ) {
					        if( $field->id > $new_field_id ) {
					            $new_field_id = $field->id;
					        }
					    }

					$new_field_id++;
	        $beers = get_posts( 'numberposts=-1&post_status=publish&post_type=bier' );
					//var_dump($beers);

					foreach ( $beers as $beer ) {
								  // Prepare field properties
					        $props = array(
					            'id'        => $new_field_id,
											'type' => 'product',
									    'inputType' => 'singleproduct',
					            'label'     => $beer->post_title,
					            'basePrice' => floatval( $beer->preis ),
											'cssClass'  => 'gf_beer',
					            'enableCalculation' => true
					        );
									//var_dump($props);

					        // Create new gravity forms field and add it to the form object
					        $nf = GF_Fields::create( $props );

					        // Hack - insert into array at specific position
					        // Needed to display product fields before other fields
					        // in the form
					        array_splice( $form['fields'], 4, 0, array($nf) );

					        $new_field_id++;
					    }

	    return $form;
}

And what the logfile says:

2021-01-26 17:15:38.972104 - DEBUG --> GFFormDisplay::process_form(): Starting to process form (#1) submission. 
2021-01-26 17:15:38.974180 - DEBUG --> GFFormDisplay::process_form(): Source page number: 1. Target page number: 0. 
2021-01-26 17:15:38.974984 - DEBUG --> GFFormDisplay::process_form(): After validation. Is submission valid? Yes. 
2021-01-26 17:15:38.975014 - DEBUG --> GFFormDisplay::process_form(): Submission is valid. Moving forward. 
2021-01-26 17:15:38.975060 - DEBUG --> GFFormsModel::save_entry(): Saving entry. 
2021-01-26 17:15:38.979944 - DEBUG --> GFFormsModel::save_entry(): Entry record created in the database. ID: 17. 
2021-01-26 17:15:38.981159 - DEBUG --> GFFormsModel::save_entry(): Saving entry fields. 
2021-01-26 17:15:38.981251 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Name(#1.2 - name). 
2021-01-26 17:15:38.981295 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Name(#1.3 - name). 
2021-01-26 17:15:38.981329 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Name(#1.4 - name). 
2021-01-26 17:15:38.981364 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Name(#1.6 - name). 
2021-01-26 17:15:38.981405 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Name(#1.8 - name). 
2021-01-26 17:15:38.981456 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Anschrift(#2.1 - address). 
2021-01-26 17:15:38.981492 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Anschrift(#2.2 - address). 
2021-01-26 17:15:38.981527 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Anschrift(#2.3 - address). 
2021-01-26 17:15:38.981560 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Anschrift(#2.4 - address). 
2021-01-26 17:15:38.981595 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Anschrift(#2.5 - address). 
2021-01-26 17:15:38.981626 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Anschrift(#2.6 - address). 
2021-01-26 17:15:38.981682 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Telefon(#3 - phone). 
2021-01-26 17:15:38.981731 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: E-Mail(#13 - email). 
2021-01-26 17:15:38.981779 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Collaboration Pale Ale(#21 - product). 
2021-01-26 17:15:38.981825 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: What is Love?(#20 - product). 
2021-01-26 17:15:38.981868 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Exploring New Galaxies(#19 - product). 
2021-01-26 17:15:38.981913 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Devil in Disguise(#18 - product). 
2021-01-26 17:15:38.981956 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Gooseberry Gose(#17 - product). 
2021-01-26 17:15:38.982004 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Lieferung(#7 - shipping). 
2021-01-26 17:15:38.986496 - DEBUG --> GFFormsModel::queue_save_input_value(): Queued field operation: Summe(#5 - total). 
2021-01-26 17:15:38.988900 - DEBUG --> GFFormsModel::save_entry(): Finished saving entry fields. 

Does anybody have an idea what i’m doing wrong?
Best regards, Bernhard

Solved! The answer came from a nice guy at stackoverflow. I completly missed that i also have to define the inputs array in the properties.

$props = array(
    'id' => $new_field_id,
    'type' => 'product',
    'inputType' => 'singleproduct',
    'label' => $beer->post_title,
    'basePrice' => floatval( $beer->preis ),
    'enableCalculation' => true,
    'inputs' => array(
        array(
            'id'    => $new_field_id.'.1',
            'label' => $beer->post_title,
            'name'  => 'param_product'
        ),
        array(
            'id'    => $new_field_id.'.2',
            'label' => 'Price',
            'name'  => 'param_price'
        ),
        array(
            'id'    => $new_field_id.'.3',
            'label' => 'Quantity',
            'name'  => 'param_qty'
        ),
    ),
);
2 Likes