@Altron8337

Как в hook_form_alter скрыть ajax форму после отправки?

Здравствуйте,изменяю форму входа делаю её ajax, всё хорошо, но как после сделать что бы после успешного сабмита форма исчезла и осталось лишь приветственое сообщение, сейчас остаётся и и форма и сообщение

function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == 'user_login_form') {
    $form['system_messages'] = [
      '#markup' => '<div id="' . Html::getClass($form_id) . '-messages"></div>',
      '#weight' => -100,
    ];
    $form['name']['#attributes'] = ['style' => 'background-color: #0a6fb4'];
    $form['actions']['submit']['#ajax'] = [
      'callback' => 'ajax_callback',
      'event' => 'click',
      'progress' => [
        'type' => 'throbber',
      ],
    ];
    $form['#submit'][] = 'mymodule_form_submit';
  }
}

function ajax_callback(array &$form, FormStateInterface $form_state) {
// код не по теме
}

function mymodule_form_submit(&$form, FormStateInterface $form_state) {
 \Drupal::messenger()
    ->addMessage((t('Привет')));
}
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
andead
@andead
друпал девелопер, фрилансер
В форме:

$form['#prefix'] = '<div id="form-wrapper">';
$form['#suffix'] = '</div>';
$form['actions']['submit']['#ajax']['wrapper'] = 'form-wrapper';


В ajax callback:

return ['#markup' => 'Привет'];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы