Drupal-8 Modal не обрабатывает ошибки при входе - PullRequest
1 голос
/ 30 апреля 2019

Я использовал класс '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, она работает в случае успеха, но ошибки не отображаются в модальном режиме.

...