wtyczki – Jak odzyskać poprawne dane robocze po kliknięciu przycisku ostatecznego przesłania
używam Forminator
wtyczka (do tworzenia formularzy) i e2pdf
(do załącznika pdf). W formularzu forminator jest opcja o nazwie save and continue
co pomaga w stworzeniu roboczego łącza przez Użytkownika 1 i wysłaniu go Użytkownikowi 2 w celu wypełnienia pól formularza, których nie wypełnił Użytkownik 1
To jest przypadek użycia
-
Gdy Użytkownik 2 kliknie link roboczy, aby kontynuować wypełnianie formularza rozpoczętego przez Użytkownika 1, pola formularza zostaną wstępnie wypełnione danymi wprowadzonymi przez Użytkownika 1 <--- to działa
-
Użytkownik 2 może dodać nowe dane lub zmodyfikować istniejące dane
-
Po ostatecznym przesłaniu formularza forminatora, dane w formularzu powinny zawierać zarówno oryginalne dane od Użytkownika 1, jak i wszelkie nowe dane od Użytkownika 2, połączone w plik PDF. Obrazy i podpisy nie powinny być wstępnie wypełnione w formularzu, ale powinny pojawić się w ostatecznym pliku PDF <—— to jest główne zadanie, które chcę osiągnąć. Jak mogę to zrobić?
Uwaga: Obrazy nie były widoczne w pliku PDF wygenerowanym podczas instalacji. user1
kliknięto Send to customer completion
(tutaj jest przycisk, ale użyłem tego kodu, żeby to zadziałało, chcę tylko osiągnąć numer punktu 3
add_filter('forminator_custom_form_submit_field_data', function ($field_data_array, $form_id) {
/** Process Hook only when Save Draft is used */
if (isset($_POST['save_draft']) && $_POST['save_draft'] === 'true') {
/** Get Forms and Fields */
$module_object = Forminator_Base_Form_Model::get_model($form_id);
$fields = $module_object->get_real_fields();
/** Iterate over Fields */
foreach ($fields as $field_index => $field) {
$field_array = $field->to_formatted_array();
$field_type = isset($field_array['type']) ? $field_array['type'] : false;
/** Check Field Type */
if ($field_type == 'signature' || $field_type == 'upload') {
$field_id = Forminator_Field::get_property('element_id', $field_array);
$form_field_obj = Forminator_Core::get_field_object($field_type);
switch ($field_type) {
/** Handle Signature field */
case 'signature':
$field_data = apply_filters('forminator_handle_specific_field_types', array(), $form_field_obj, $field_array);
$field_data = $form_field_obj->sanitize($field_array, $field_data);
if (!empty($field_data) || '0' === $field_data) {
$field_data_array[] = array(
'name' => $field_id,
'value' => $field_data,
'field_type' => $field_type,
'key' => $field_index,
'field_array' => $field_array,
'form_field_obj' => $form_field_obj,
);
}
break;
/** Handle Upload field */
case 'upload':
$file_type = Forminator_Field::get_property('file-type', $field_array, 'single');
if ('single' === $file_type) {
$upload_data = $form_field_obj->handle_file_upload(
$form_id,
$field_array,
array(),
'transfer'
);
if (isset($upload_data['success']) && $upload_data['success']) {
$field_data_array[] = array(
'name' => $field_id,
'value' => array(
'file' => $upload_data,
),
'field_type' => $field_type,
'key' => $field_index,
'field_array' => $field_array,
'form_field_obj' => $form_field_obj,
);
}
}
break;
default:
break;
}
}
}
}
return $field_data_array;
}, 10, 2);