2016-12-23 2 views
2

J'ai ajouté des cases à cocher dynamiquement au formulaire Gravity, mais lorsque je sélectionne les 2 derniers éléments et que je clique sur submit j'ai reçu un message d'erreur "Ce champ est obligatoire". Si je sélectionne le 1er objet ou le 2ème, 3ème alors aucune erreur et le formulaire est soumis avec succès.Erreur de cases à cocher à remplissage dynamique dans Gravity Forms

Voici mon code php.

add_filter('gform_pre_render_56', 'get_menu_options'); 
 
add_filter('gform_pre_validation_56', 'get_menu_options'); 
 
add_filter('gform_pre_submission_filter_56', 'get_menu_options'); 
 

 
function get_menu_options($form){ 
 
/****get all beverages from post*****/ 
 
$beverages = array_filter(get_post_meta(get_the_ID(), 'wpcf-beverages', false)); 
 

 
$form['fields'][22]->choices = set_field_choices($beverages); 
 

 
return $form; 
 

 
} 
 

 
function set_field_choices($values){ 
 
    $field_choices = array(); 
 
    $isSelected = (count($values) == 1)?true:false; 
 
    foreach ($values as $value) { 
 
     $field_choices[] = array(
 
       'text'   => $value, 
 
       'value'   => $value, 
 
       'isSelected' => $isSelected 
 
      ); 
 
    } 
 
    return $field_choices; 
 
}

Voici page link

Merci

Répondre

0

Ok, je compris le problème. nous devons garder les yeux sur ID d'entrée

add_filter('gform_pre_render_56', 'get_menu_options'); 
 
add_filter('gform_pre_validation_56', 'get_menu_options'); 
 
add_filter('gform_pre_submission_filter_56', 'get_menu_options'); 
 
add_filter('gform_admin_pre_render_56', 'get_menu_options'); 
 

 
function get_menu_options($form){ 
 

 
$buffetstations1 = array_filter(get_post_meta(get_the_ID(), 'wpcf-buffet-station-1', false)); 
 

 
foreach ($form[ 'fields' ] as $key => $field) { 
 

 
if($field->id == 72){ 
 
     \t 
 
if(count($buffetstations1) == 0){ 
 
unset ($form['fields'][$key]); 
 
} 
 
    \t $choices = array(); 
 
    \t $inputs = array(); 
 
    \t $field_id = $field->id; 
 
    \t $input_id = 1; 
 

 
foreach ($buffetstations1 as $buffetstation1) { 
 
//skipping index that are multiples of 10 (multiples of 10 create problems as the input IDs) 
 

 
if ($input_id % 10 == 0) { 
 
    $input_id++; 
 
} 
 

 
$choices[] = array('value' => $buffetstation1, 'text' => $buffetstation1); 
 
$inputs[] = array('label' => $buffetstation1, 'id' => "{$field_id}.{$input_id}"); 
 
$input_id++; 
 
} 
 
$field->choices = $choices; 
 
$field->inputs = $inputs; 
 
\t \t  
 
} 
 

 
} 
 

 
return $form; 
 

 
}

0

Il peut également être réglé avec le filtre «paramètre form_field_value_ $. Étant donné un champ de case à cocher avec les choix 'Rouge', 'Vert', 'Bleu', 'Jaune' 'Orange' et le paramètre dynamiquement autorisé à être rempli pour être renseigné: 'couleur', les cases suivantes cocheront les cases Bleu et Vert.

add_filter('gform_field_value_color', 'set_checkbox'); 
function set_checkbox($form) { 
    return 'Blue,Green'; 
} 

Je crois que cela a été récemment ajouté aux formes gravitaires.