0

我在 Wordpress 中使用 Gravity Forms 为客户创建提交表单。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处理程序,它将输入发送到不同的插件。)

我创建了一个文件输入类型,并且我相信我有正确的命名约定。我已经在下面发布了我的函数以供审查。)输入类型在 Wordpress 管理页面和重力表单表单预览上正确显示,但是当我发布表单时,我的自定义字段没有与之关联的值。(在 $_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;  
     }
?>

谢谢你。

4

1 回答 1

0

答案其实很简单——不是重力形式;而是重力形式。这是基本的 PHP。我使用的是$_POST超全局而不是$_FILES数据实际所在的位置。希望这将帮助遇到此问题的其他人。

于 2012-04-18T22:33:05.867 回答