Форма Друпал без перенаправления

Метод $form_state->disableRedirect() в Drupal используется внутри обработчика отправки формы, чтобы явно предотвратить перенаправление (редирект) пользователя после того, как форма была отправлена и обработана.

По умолчанию, после успешной отправки формы Drupal и выполнения всех обработчиков валидации и отправки, Form API обычно перенаправляет браузер пользователя на другую страницу (чаще всего обратно на текущую страницу или в указанное место назначения). Метод disableRedirect() отменяет это стандартное поведение.
Типичные сценарии, в которых вы можете использовать этот метод:
AJAX-формы: Когда форма отправляется через AJAX, обычно требуется вернуть определенный ответ (например, обновленный массив рендера или команду AJAX), а не выполнять полное перенаправление страницы.
Оставаться на той же странице: Если вы хотите, чтобы пользователь остался на странице формы после отправки, чтобы увидеть сообщения о состоянии, потенциально взаимодействовать с другими частями страницы или заполнить форму снова без перезагрузки страницы.

Предотвращение ошибок: Это может помочь избежать определенных ошибок, связанных с внешними или многоязычными перенаправлениями доменов, которые система Drupal по умолчанию может некорректно обрабатывать.
Пример реализации
Метод должен быть вызван внутри функции пользовательского обработчика отправки вашей формы (submit handler).
php
use Drupal\Core\Form\FormStateInterface;
// ... другой код ...

public function submitForm(array &$form, FormStateInterface $form_state) {
// Обработка отправки формы, сохранение данных и т.д.
// ...

// Предотвращаем перенаправление формы после завершения этого обработчика.
$form_state->disableRedirect();

// Опционально, можно добавить сообщение для пользователя.
\Drupal::messenger()->addStatus($this->t('Форма обработана, перенаправления не произошло.'));
}

Ключевые моменты
Интерфейс: Это часть FormStateInterface в ядре Drupal.
Современный способ: Это современный, явный способ остановить перенаправление, который заменил старые методы Drupal 7, такие как $form_state['no_redirect'] = TRUE;.
Проверка статуса: Вы можете проверить статус флага перенаправления с помощью метода $form_state->isRedirectDisabled().

Компьютер: