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;
}
本文标签:
版权声明:本文标题:php - how to show edit entry in gravity form with nested form to add multiple person and show in table - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745293182a2651921.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论