Я использовал класс «use-ajax» для отображения формы входа в модальном режиме. Я хочу обрабатывать ошибки проверки в том же модальном режиме, не закрывая его. При успешном входе в систему он перенаправляется правильно, но когда возникает ошибка, он закрывает модальное окно и перенаправляет на страницу входа, т.е. пользователь/логин, и отображает ошибки на этой странице. Я попытался использовать обратный вызов 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;
}
Приведенный выше код также дает мне идентификатор сеанса, но из-за ошибки drupal ajax он не перенаправляется при успешном закрытии модального окна.
Если я пойду с не-ajax, т.е. если я удаляю функцию обратного вызова ajax, она работает с успехом, но ошибки не отображаются в модальном режиме.