Drupal 7 HTTP AJAX ошибка, код HTTP 200 и неверные учетные данные POST - PullRequest
0 голосов
/ 25 октября 2018

В настоящее время я работаю с Drupal 7 API форм, но я получаю эту ошибку при первой отправке формы:

Ошибка AJAX

В журналах Drupal у меня есть Invalid POST form data.

И когда я снова отправляю свою форму, у меня NOT появляется ошибка AJAX и форма наконецимеет нормальное поведение.

Вот код моей формы:

<?php

function test_module_form($form, &$form_state) {

    $form['title'] = array(
        '#markup' => '<h4>Me faire rappeler gratuitement par un Conseiller</h4>'
    );


    $form['phone'] = array(
        '#type' => 'textfield',
        '#attributes' => array(
            'placeholder' => array('Votre numéro de téléphone'),
        ),
    );

    $form["wrapper"] = array("#markup" => "<div id='ajax-messages'></div>");

    $form["submit"] = array(
        "#type" => "submit",
        "#value" => t("Send"),
        "#ajax" => array(
            "callback" => "test_module_form_callback",
            "wrapper" => "ajax-messages",
            "effect" => "fade",
        ),
    );

    return $form;
}

Функция обратного вызова:

function test_module_form_callback($form, &$form_state) {
    if (count(form_get_errors()) == 0){
        $ajax_commands = array();
        $ajax_commands[] = ajax_command_invoke('#ajax-messages', 'hide');
        $ajax_commands[] = ajax_command_invoke('#edit-submit', 'hide');
        $ajax_commands[] = ajax_command_before('#edit-submit','<p class="submit-success">Votre demande est enregistrée, un Conseiller va prendre contact avec vous.<p>');
        $ajax_commands[] = ajax_command_before('#edit-submit',"<script>ga('send', 'event', 'toolbar_callback', 'saisie-tel','validation');</script>");
        return array('#type' => 'ajax', '#commands' => $ajax_commands);
    }

    else {
        return $form["wrapper"];
    }
}

hook_form_validate:

function test_module_form_validate($form, &$form_state) {
    $phone = $form_state['values']['phone'];

    if ($phone == '') {
        form_set_error('phone', 'Veuillez inscrire un numéro de téléphone');
    }

    else if (!is_numeric($phone)) {
        form_set_error('phone', 'Le numéro de téléphone saisi est incorrect');
    }
}

Кто-нибудь знает, откуда возникла проблема и как ее решить?

Большое спасибо за помощь:)

...