WordPress

wtyczki – Jak odzyskać poprawne dane robocze po kliknięciu przycisku ostatecznego przesłania

  • 23 lipca, 2024
  • 1 min read
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

  1. 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

  2. Użytkownik 2 może dodać nowe dane lub zmodyfikować istniejące dane

  3. 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);


Źródło

Warto przeczytać!  Ile czasu zajmuje konserwacja WordPressa? (Poradnik dla początkujących)