Я использовал класс 'use-ajax' для визуализации формы входа в модал. Я хочу обрабатывать ошибки проверки на том же модальном, не закрывая его. При успешном входе в систему он перенаправляет правильно, но при возникновении ошибки он закрывает модальный и перенаправляет на страницу входа, т.е. user / login и отображает ошибки на этой странице. Я попытался использовать обратный вызов ajax для отображения ошибки на самом модале, изменив форму, которая работает. Но это дает мне Drupal AJAX ошибку. Вот мой код:
$form['#prefix'] = '<div id="modal-form">';
$form['#suffix'] = '</div>';
$form['status_messages'] = [
'#type' => 'status_messages',
'#weight' => -10,
];
$form['actions']['submit']['#ajax'] = array(
'callback' => 'setMessage',
'wrapper' => 'modal-form',
);
=============================================== ==========================
function setMessage(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
$response = new AjaxResponse();
if ($form_state->hasAnyErrors()) {
$response->addCommand(new ReplaceCommand('#modal-form', $form));
}
else {
$command = new CloseModalDialogCommand('#modal-form', FALSE);
$response->addCommand($command);
}
return $response;
}
Приведенный выше код также дает мне идентификатор сессии, но из-за ошибки в ajax drupal он не перенаправляется в случае успеха, закрывая модальный режим.
Если я пойду с не-AJAX, т.е. если я удаляю функцию обратного вызова ajax, она работает в случае успеха, но ошибки не отображаются в модальном режиме.