Пример добавления ajax-команды при установке/снятия флага модулем Flag.
// src/ModulenameEventSubscriber.php
class ModulenameEventSubscriber implements EventSubscriberInterface {
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents(): array {
$events[KernelEvents::RESPONSE][] = ['onKernelResponse'];
return $events;
}
/**
* KernelEvents::RESPONSE event callback.
*/
public function onKernelResponse(ResponseEvent $event): void {
if (in_array(\Drupal::routeMatch()->getRouteName(), ['flag.action_link_flag', 'flag.action_link_unflag'])) {
$response = $event->getResponse();
if ($response instanceof AjaxResponse) {
$response->addCommand(new AlertCommand('Altered!'));
}
}
}
}
# modulename.services.yml
services:
modulename.event_subscriber:
class: Drupal\modulename\ModulenameEventSubscriber
tags:
- { name: event_subscriber }
Так же для изменения ajax ответа есть хук hook_ajax_render_alter()
, но он выполняется уже после сборки ассетов, т.е. будет игнорировать атачи, которые вы нагенерили.
Написанное актуально для
Drupal 9+
Похожие записи
- Показать форму входа при попытке анонимного пользователя поставить флаг
- Показать второй шаг многошаговой формы в модальном окне
- Навесить на элемент managed_file свой ajax callback (Как обновить всю форму при загрузки файла в managed_file)
- Восстанавливаем позицию текстового курсора при ajax обновлении формы
- Как выполнять свой js-код до или после любых AJAX запросов (изменение работы AJAX API)
Добавить комментарий