2012-04-14 35 views
0

我在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處理,我已經開始寫,將輸入發送到不同的插件。)

我創建了一個文件輸入類型,我相信我有正確的命名約定。 )在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; 
    } 
?> 

謝謝。

回答

0

答案其實很簡單 - 它不是Gravity Forms;這是基本的PHP。我正在使用超全球的$_POST而不是$_FILES,其中數據實際存在。希望這會幫助遇到這個問題的其他人。