Gravity Form-Dynamic Pop. цепной выбор


Немного нового здесь. Учу себя PHP/java/и т.д. как ход. Я использовал ЭТО, используя страницу документа GF, чтобы создать связанный выбор, который будет извлекать название компании. (из предыдущей записи GF) в качестве родителя, но у меня проблемы с дочерним элементом (который является особенностью компании).

Я был очень горд собой, когда заставил Parent моего Chained Select срабатывать, используя следующий код:

add_filter("gform_pre_render_14", "populate_companies");
add_filter("gform_admin_pre_render_14", "populate_companies");
add_filter( "gform_chained_selects_input_choices_14_5_1", "populate_companies");
 function populate_companies( $form, $input_items, $form_id, $field, $input_id, $chain_value ){
  if( $form["id"] != 14 )
  
         return $form;
   
  $items = array();
   
$form_id = '7';
$entries = GFAPI::get_entries( $form_id );

   if (is_array($entries))
{
	foreach($entries as $fcompany) $items[] = array( 'value' => rgar( $fcompany, '4' ), 'text' => rgar( $fcompany, '4' ), 'isSelected' => false );
}
     foreach($form["fields"] as &$field)
        if($field["id"] == 5){
            $field["choices"] = $items;
        }
    return $form;
}

Теперь этот код работает. Может быть, это не красиво, но это работает. Поэтому следующим шагом будет заставить его заполнить поле «Дочерний элемент». Я смог зайти так далеко, но я в тупике...

add_filter("gform_pre_render", "populate_features");
add_filter("gform_admin_pre_render", "populate_features");
add_filter( "gform_chained_selects_input_choices_14_5_2", "populate_features");
 function populate_features( $form, $input_items, $form_id, $field, $input_id, $chain_value ){
  if( $form["id"] != 14 )
  
         return $form;
   
  $items = array();
  $selected_fcompany = $chain_value[ "{$field->id}.1" ];
   if( ! $selected_fcompany ) {
        return $input_choices;
    }
   
$form_id = '7';
$entries = GFAPI::get_entries( $form_id );

   if (is_array($entries))
{
	foreach($entries as $cfeature) $items[] = array( 'value' => rgar( $cfeature, '10' ), 'text' => rgar( $cfeature, '10' ), 'isSelected' => false );
}
     foreach($form["fields"] as &$field)
        if($field["id"] == 5){
            $field["choices"] = $items;
        }
    return $items;
}

Я чувствую, что проблема связана с chained_value. Черт возьми, если я смогу заставить его работать через первый foreach в первом фрагменте, я стану танцевать от радости. Есть идеи?


person Parkbum    schedule 27.01.2018    source источник


Ответы (1)


В итоге остановился на плагине Gravity Plus. Это было очень удобно, но в форме не может быть больше одного, что довольно неубедительно. Потребуется некоторая работа, чтобы заставить его работать, но дайте мне знать, что вам нужна помощь!

https://gravityplus.pro/gravity-forms-dynamic-population/

person Parkbum    schedule 05.03.2018
comment
Заполнить что угодно не ограничивается одним в форме и может заполнить практически все, что угодно. ???? gravitywiz.com/documentation/gravity-forms-populate-anything - person Dave from Gravity Wiz; 24.04.2019
comment
Спасибо, Дэвид. Я прошел через это, и в наши дни на самом деле более вероятно, что я буду реализовывать свой собственный JavaScript для выполнения сложной популяции. - person Parkbum; 06.06.2019
comment
Если вы еще не использовали Populate Anything, я настоятельно рекомендую проверить это. Это немного более надежно, чем что-либо еще на рынке, и многие очень опытные разработчики считают, что Populate Anything намного быстрее / проще, чем большинство пользовательских решений, которые они реализовали. ???? - person Dave from Gravity Wiz; 06.06.2019
comment
Спасибо, Дэвид. Моим конечным результатом для этого было то, что я изучил JavaScript. Это был довольно сложный AJAX. - person Parkbum; 23.06.2019