admin管理员组

文章数量:1418637

i want to edit gravity form entry in frontend. in gravity form one field has another nested form when user add entry from nested form it will display in table. i want it to show previous added entry in nested form when we edit gravity form from frontend. i used below code but it not working in function when i get nested form entry it found. but i don't know how to set it in table to display previous added entry. i usd below code but it not working

add_filter('gform_pre_render_11', 'prefill_parent_form_data'); // Only for Form ID 11
add_filter('gform_pre_validation_11', 'prefill_parent_form_data');
add_filter('gform_pre_submission_filter_11', 'prefill_parent_form_data');

add_filter('gform_pre_render_12', 'prefill_nested_form_data'); // Only for Nested Form (Form 12)
add_filter('gform_pre_validation_12', 'prefill_nested_form_data');
add_filter('gform_pre_submission_filter_12', 'prefill_nested_form_data');

function prefill_parent_form_data($form) {
    if (isset($_GET['entry']) && !empty($_GET['entry'])) {
        $entry_id = absint($_GET['entry']);
        $entry = GFAPI::get_entry($entry_id);

        if (is_wp_error($entry) || $entry['form_id'] != 11) {
            return $form; // Skip if wrong form
        }
        /*echo "<pre>";
        print_r($entry);
        echo "=============================";
        print_r($form);*/
        foreach ($form['fields'] as &$field) {
            if ($field->type === 'name' && !empty($field->inputs)) {
                foreach ($field->inputs as &$input) {
                    $sub_field_id = (string) $input['id'];
                    if (isset($entry[$sub_field_id])) {
                        $input['defaultValue'] = $entry[$sub_field_id];
                    }
                }
            }else if ($field->type === 'form' && isset($entry[$field->id])) {
                $nested_form_field_id = 74;
                $nested_form_entry_id = rgar($entry, $nested_form_field_id);
                
                if ($nested_form_entry_id) {
                    $nested_form_entry = GFAPI::get_entry($nested_form_entry_id);
                    echo "<pre>";
                    print_r($nested_form_entry);exit;
                    if (!is_wp_error($nested_form_entry)) {
                        // Assuming nested form data is in fields 1 and 6 in nested form
                        $nested_field_1 = rgar($nested_form_entry, '1');
                        $nested_field_6 = rgar($nested_form_entry, '6');
                        
                        // Create a table row with nested form data
                        $field->content = '<table class="nested-form-data">
                                              <tr>
                                                <th>Nested Field 1</th>
                                                <td>' . esc_html($nested_field_1) . '</td>
                                              </tr>
                                              <tr>
                                                <th>Nested Field 6</th>
                                                <td>' . esc_html($nested_field_6) . '</td>
                                              </tr>
                                            </table>';
                    }
                }
                //$field->defaultValue = json_encode(array($nested_form_entry_ids));
            }else if($field->type === 'checkbox'){
                if ($field->type === 'checkbox' && isset($entry[$field->id])) {
                    $selected_inputs = maybe_unserialize($entry[$field->id]); // Get the selected options from entry

                    // If the entry has selected checkboxes
                    if (is_array($selected_inputs)) {
                        foreach ($field->inputs as $ky=>&$input) {
                            // Check if the input's ID is in the selected values from the entry
                            if (in_array($input['id'], $selected_inputs)) {
                                $field->choices[$ky]['isSelected'] = true; // Mark the checkbox as selected
                            } else {
                                $field->choices[$ky]['isSelected'] = false; // Mark the checkbox as not selected
                            }
                        }
                    }
                } else {
                    foreach ($field->inputs as $ky=>&$input) {
                        if (isset($entry[$input['id']]) && $entry[$input['id']] != '') {
                            $field->choices[$ky]['isSelected'] = true;
                        } else {
                            $field->choices[$ky]['isSelected'] = false;
                        }
                    }
                }
            } else {
                $value = rgar($entry, $field->id);
                if (!empty($value)) {
                    $field->defaultValue = $value;
                }
            }
        }
    }
    return $form;
}

function prefill_nested_form_data($form) {
    if (isset($_GET['entry']) && !empty($_GET['entry'])) {
        $parent_entry_id = absint($_GET['entry']);
        $parent_entry = GFAPI::get_entry($parent_entry_id);

        if (is_wp_error($parent_entry) || $parent_entry['form_id'] != 11) {
            return $form;
        }

        // Find Nested Form Field in Parent Entry
        foreach ($parent_entry as $field_id => $value) {
            if (is_serialized($value)) {
                $nested_entry_ids = maybe_unserialize($value);
                if (is_array($nested_entry_ids)) {
                    foreach ($nested_entry_ids as $nested_entry_id) {
                        $nested_entry = GFAPI::get_entry($nested_entry_id);
                        if ($nested_entry && $nested_entry['form_id'] == 12) {
                            foreach ($form['fields'] as &$field) {
                                $field_id = $field->id;
                                if (isset($nested_entry[$field_id])) {
                                    $field->defaultValue = $nested_entry[$field_id];
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return $form;
}

本文标签: