Две (или более) формы на одной веб-странице - PullRequest
0 голосов
/ 29 мая 2020

На моей домашней странице https://www.mamafrica.it/ У меня есть два модуля для foundraiser. Каждый из этих модулей содержит формы

Это упрощенный пример двух форм:

<form id="give-form-201" enctype="multipart/form-data" action="https://www.mamafrica.it/?payment-mode=xxxx" data-id="201" method="post">
   <input class="give-input required" type="text" name="give_first" autocomplete="given-name" placeholder="Nome" id="give-first" value="" required="" aria-required="true">
   <input class="give-input" type="text" name="give_last" autocomplete="family-name" id="give-last" placeholder="Cognome" value="">
</form>

и

<form id="give-form-201" enctype="multipart/form-data" action="https://www.mamafrica.it/?payment-mode=xxxx" data-id="201" method="post">
   <input class="give-input required" type="text" name="give_first" autocomplete="given-name" placeholder="Nome" id="give-first" value="" required="" aria-required="true">
   <input class="give-input" type="text" name="give_last" autocomplete="family-name" id="give-last" placeholder="Cognome" value="">
</form>

Все работает нормально, но я добавил новый способ оплаты офлайн ("Donazione con bonifico"). В этом случае донор должен добавить файлы с квитанцией о банковском переводе. Я добавляю эту строку в обе формы

<input id="fileToUpload" name="fileToUpload" type="file" accept=".pdf,.jpg">

Проблема в том, что отправка прикрепленного файла работает только с первой формой! Все остальные поля правильно отправляются и сохраняются в базе данных, но имя файла не сохраняется и не отправляется в моей области загрузки на моем сайте.

Я использую плагин givewp и у меня нет полного контроля над кодом , но проблема в этой части МОЕГО кода (в файле function.phè)

$ _FILES ['fileToUpload'] ['name'] всегда пуст во вторых формах.

function give_mamafrica_donations_save_custom_fields( $payment_id ) {
    if (!empty($_FILES['fileToUpload']['name'])) {
        $timestamp = time(); 
        $userfile_name = $timestamp . "-" . $_FILES['fileToUpload']['name'];

        //$message = wp_strip_all_tags( $_FILES['fileToUpload']['name'], true );
        $message = wp_strip_all_tags($userfile_name, true );
        give_update_payment_meta( $payment_id, 'fileToUpload', $message );  

        //percorso della cartella dove mettere i file caricati dagli utenti
        $uploaddir =  get_stylesheet_directory() . '/myuploadpath/';

        //Recupero il percorso temporaneo del file
        $userfile_tmp = $_FILES['fileToUpload']['tmp_name'];

        //recupero il nome originale del file caricato

        //copio il file dalla sua posizione temporanea alla mia cartella upload

        if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name)) {
        //Se l'operazione è andata a buon fine...
            echo 'File inviato con successo.';

        }else{
            //Se l'operazione è fallta...
            echo 'Upload NON valido!';          
        }       
    }   
}

add_action( 'give_insert_payment', 'give_mamafrica_donations_save_custom_fields' );

Я пытался использовать другой идентификатор / имя для входного файла

<input id="fileToUpload-201" name="fileToUpload-201" type="file" accept=".pdf,.jpg">

and

<input id="fileToUpload-202" name="fileToUpload-202" type="file" accept=".pdf,.jpg">

Но проблема остается (также я не могу изменить код плагина для обработки разных имен)

Вы можете мне помочь?

С уважением, Марко

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...