Using Gravity Forms ‘gform_validation’ PHP action

The gform_validation action allows custom validation logic to be used by Gravity Forms when a form is submitted.

Usage

add_filter('gform_validation', 'custom_validation', 10, 2);

Parameters

  • $validation_result (array) – Contains the validation result and the current Form Object.
  • $context (string) – The context for the current submission. Since Gravity Forms 2.6.3.2. Possible values: form-submit, api-submit, or api-validate.

More information

See Gravity Forms Docs: gform_validation

Examples

Validate a specific field

This example prevents a specific number (86) from being entered in a field with ID 1.

add_filter('gform_validation', 'custom_validation');

function custom_validation($validation_result) {
    $form = $validation_result['form'];
    if (rgpost('input_1') == 86) {
        $validation_result['is_valid'] = false;
        foreach ($form['fields'] as &$field) {
            if ($field->id == '1') {
                $field->failed_validation = true;
                $field->validation_message = 'This field is invalid!';
                break;
            }
        }
    }
    $validation_result['form'] = $form;
    return $validation_result;
}

Send entry data to third-party

This example demonstrates a simple approach to posting submitted entry data to a third-party application. The response is used to determine the form validation result.

add_filter('gform_validation', 'post_to_third_party');

function post_to_third_party($validation_result) {
    $form = $validation_result['form'];
    $entry = GFFormsModel::get_current_lead();

    $post_url = 'http://thirdparty.com';
    $body = array(
        'first_name' => rgar($entry, '1.3'),
        'last_name' => rgar($entry, '1.6'),
        'message' => rgar($entry, '3'),
    );

    $request = new WP_Http();
    $response = $request->post($post_url, array('body' => $body));

    if (/* check something in the $response */) {
        $validation_result['is_valid'] = false;
        foreach ($form['fields'] as &$field) {
            if ($field->id == '1') {
                $field->failed_validation = true;
                $field->validation_message = 'This field is invalid!';
                break;
            }
        }
    }

    $validation_result['form'] = $form;
    return $validation_result;
}

Abort Submission if Total is Zero

This example prevents the form submission if the Total field (id 3) is equal to zero.

add_action('gform_validation', function($validation_result) {
    $form = $validation_result['form'];

    if (10 != $form['id']) {
        return $validation_result;
    }

    if ('$0.00' === rgpost('input_3')) {
        $validation_result['is_valid'] = false;
        foreach ($form['fields'] as &$field) {
            if ($field->type == 'total') {
                $field->failed_validation = true;
                $field->validation_message = 'You must select at least one product!';
                break;
            }
        }
    }

    $validation_result['form'] = $form;
    return $validation_result;
});