В настоящее время я работаю с 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');
}
}
Кто-нибудь знает, откуда возникла проблема и как ее решить?
Большое спасибо за помощь:)