2017-03-21 15 views
0

重力フォームを検証するこの機能があります。重力フォーム - gform_validation - 複数のチェックボックスフィールドが空白の場合無効にします。

add_filter('gform_validation_16', 'check_for_age_group'); 
function check_for_age_group($validation_result) { 
    if(empty($_POST["input_31_1"]) && empty($_POST["input_12_1"])){ 
     $form = $validation_result['form']; 
     // set the form validation to false 
     $validation_result['is_valid'] = false; 
     //Find the fields and set message validation 
     foreach($form['fields'] as &$field) { 
       if ($field->id == '31') { 
        $field->failed_validation = true; 
        $field->validation_message = 'Oops! Please select either 55+ Living or All Ages.'; 
       } 
       if ($field->id == '12'){ 
        $field->failed_validation = true; 
        $field->validation_message = 'Oops! Please select either 55+ Living or All Ages.'; 
       } 
     } 
     //Assign modified $form object back to the validation result 
    $validation_result['form'] = $form; 
    return $validation_result; 
    } 
} 

検証が動作しますが、私がチェックしたチェックボックスを持つフォームを送信すると、それはおっと」状態:二つの別々のチェックボックスフィールドが空の場合、それは、彼らがある場合は、フォームの送信からユーザーを防ぐため、チェック!私たちはあなたのフォームを見つけることができませんでした ':。

Working Example

わからない、私は2つのフィールドが空であることを確認するための正しい方法を使用しています。

答えて

0

私は、if文の外return $validation_result;を移動することで、この問題を修正:

function check_for_age_group($validation_result) { 
     $form = $validation_result['form']; 
     if(empty($_POST["input_31_1"]) && empty($_POST["input_12_1"])){ 
      // set the form validation to false 
      $validation_result['is_valid'] = false; 
      //finding Field with ID of 1 and marking it as failed validation 
      foreach($form['fields'] as &$field) { 
        if ($field->id == '31') { 
         $field->failed_validation = true; 
         $field->validation_message = 'Oops! Please select either 55+ Living or All Ages.'; 
         continue; 
        } 
        if ($field->id == '12'){ 
         $field->failed_validation = true; 
         $field->validation_message = 'Oops! Please select either 55+ Living or All Ages.'; 
         continue; 
        } 
      } 
     } 
     //Assign modified $form object back to the validation result 
     $validation_result['form'] = $form; 
     return $validation_result; 
} 

を特定のチェックボックスフィールドが空の場合、フォームは今確認した後に提出します。