2017-05-03 52 views
1

我想讓重力形式中的列表字段之一爲動態下拉列表。我有代碼使其中一個字段成爲下拉菜單並且代碼使下拉成爲動態。請有人可以幫我把兩個代碼片斷結合起來嗎?重力形式列表的動態下拉列表

下面是動態下拉

add_filter('gform_pre_render_17', populate_dropdown_operations_global_tag1); 
add_filter('gform_admin_pre_render_17', 
populate_dropdown_operations_global_tag1); 

function populate_dropdown_operations_global_tag1($form) { 

global $wpdb; 
global $loc_id; 

$results = $wpdb->get_results("SELECT name FROM custom_tag WHERE loc_id=$loc_id AND category='global_tag1' AND status='active' ORDER BY name ASC"); 
$category = $wpdb->get_row("SELECT name FROM custom_category WHERE loc_id=$loc_id AND category='global_tag1'"); 

$choices = array(); 
$choices[] = array("text" => "Select ".$category->name, "value" => " "); 

foreach($results as $result) : 
    $choices[] = array("text" => $result->name, "value" => $result->name); 
endforeach; 

foreach($form["fields"] as &$field) : 
    if($field["id"] == '36') : 
     $field["choices"] = $choices; 
    endif; 
endforeach; 

return $form; 
} 

的代碼,這裏是下拉菜單中的代碼清單

add_filter('gform_column_input_17_36_1', 'set_column1', 10, 5); 
function set_column1($input_info, $field, $column, $value, $form_id) { 
return array('type' => 'select', 'choices' => 'NEED TO ADD CHOICES HERE'); 
} 

謝謝!

+0

這不工作嗎?你最後的foreach應該添加所有的選擇到你的下拉列表中。你還需要什麼? – berend

+0

它不起作用。按原樣使用代碼將第一個片段的選項作爲列表的標籤。然後我不知道如何從第一個函數中選擇第二個函數。我試圖合併它們,但無法使其工作 – Dudley

回答

0

根據您發表評論我告訴你我怎麼會與數據庫中的選項填充下拉:

  add_filter("gform_pre_render_17", "example_pre_render", 10 , 3); 

      function example_pre_render($form, $ajax, $field_values) { 
       global $wpdb; 
       global $loc_id; 
       $results = $wpdb->get_results("SELECT name FROM custom_tag WHERE loc_id=$loc_id AND category='global_tag1' AND status='active' ORDER BY name ASC"); 
       $category = $wpdb->get_row("SELECT name FROM custom_category WHERE loc_id=$loc_id AND category='global_tag1'"); 

       $choices = array(); 
       $choices[] = array( 
           "text" => "Select ".$category->name, 
           "value" => " ", 
           "isSelected" => true, 
           "price" => "" 
         ); 

       foreach($results as $result) { 
        $choices[] = array( 
            "text" => $result->name, 
            "value" => $result->name, 
            "isSelected" => false, 
            "price" => "" 
           ); 
       } 
      $form["fields"][36]->choices = $choices 

      return $form; 
      } 

如果不填充下拉我將通過代碼調試,看看是否$結果有值和$ form對象在返回時的外觀。

它應該是這個樣子:

Debug Example

我知道這裏的一個複選框,但它應該工作差不多了。

+0

感謝您的幫助,但這不起作用,因爲它將刪除將列表字段更改爲下拉列表的代碼。 – Dudley

+0

嗯......你爲什麼要創建一個列表字段,並將其更改爲下拉菜單?你可以創建一個重力形式的下拉菜單? – berend

+0

我想要添加行的功能。 – Dudley