Гравитационные формы: созданное пользователем поле не публикует данные

Я использую Gravity Forms в Wordpress, чтобы создать форму представления для клиента. У Gravity Forms есть большинство требований, которые мне нужны для этой задачи, но мне нужно встроить некоторые настраиваемые поля в сам плагин (который должен быть расширяемым).

Таким образом, я создаю тип поля, который загружает видеофайл на Youtube после отправки. Я планирую использовать тип ввода загрузки файла, и после отправки захватить данные файла (или URL / путь) и загрузить его на Youtube. Это часть клиентского проекта, который я должен построить за три недели.

Я создал пользовательское поле с помощью следующих хуков: (извините за ужасное форматирование; ссылки и код плохо сочетаются)

add_action("gform_field_input", array('GFYoutubeUpload', 'add_gf_fieldtype'), 10, 5)

add_filter("gform_editor_js_set_default_values", array('GFYoutubeUpload', 'add_gf_defaults'));

add_action("gform_editor_js", array('GFYoutubeUpload', 'add_gf_formeditor'));

add_filter("gform_field_type_title", array('GFYoutubeUpload', 'add_gf_title'));

add_filter("gform_add_field_buttons", array('GFYoutubeUpload', 'add_gf_button'));

(У меня также есть обработчик pre_submission, который я начал писать, который отправит входные данные другому плагину.)

Я создал тип ввода File и считаю, что у меня правильное соглашение об именах. Ниже я разместил свою функцию для проверки.) Тип ввода корректно отображается на странице администратора Wordpress и в предварительном просмотре формы Gravity Forms, но когда я публикую форму, мое настраиваемое поле не имеет значения, связанного с ним. (В $_POST тоже нет ничего соответствующего.)

Глядя на код ниже, кто-нибудь может сказать мне, где я ошибся при создании этого ввода? Есть ли другой хук, о котором я не знаю, который мне нужно использовать для обработки данных, которые я добавил в форму?

<?php
     /* Register the cusitom field type with Gravity Forms. */ 
     public static function add_gf_fieldtype($input, $field, $value, $lead_id, $form_id) {  
         if ($field["type"] == "youtube") {  
             $input_name = $form_id .'_'. $field['id'];  
             $css = isset($field['cssClass']) ? $field['cssClass'] : '';  

             return sprintf("<div class='ginput_container'><input name='input_%s' id='input_%s_%s' class='%s' value='' type='file' /></div>", $field["id"], $form_id, $field["id"], $field["type"]. ' ' .esc_attr($css). ' ' .$field['size']);  
         }  

         return $input;  
     }
?>

Спасибо.

1 ответ

Решение

Ответ был на самом деле прост - это не были Гравитационные Формы; это был базовый PHP. Я использовал $_POST суперглобальный вместо $_FILESгде данные фактически жили. Надеюсь, это поможет кому-то еще, кто сталкивается с этой проблемой.

Другие вопросы по тегам