EntityTypeEvents::XXX
срабатывает при создании / обновлении / удалении entity types
. Глядя на ваше имя класса, я предполагаю, что вы хотите entity
события. В настоящее время это невозможно сделать с помощью Drupal Core и комбо событий, которые вы пытаетесь реализовать. Обращаясь к этой проблеме: https://www.drupal.org/project/drupal/issues/2551893 вы также можете попробовать модуль, указанный в билете, но у меня нет опыта работы с этим модулем, поэтому пробег может отличаться.
Если вам нужны события сущностей, которые вам нужно придерживаться старой системы стилей хуков.
Крюки, которые вы ищете:
- hook_entity_update
- hook_entity_delete
- hook_entity_create / hook_entity_insert (в зависимости от того, что вы хотите сделать)
Полная ссылка здесь, в документации по Drupal: https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21entity.api.php/8.8.x
Еще одна вещь, которую я заметил, может помочь вам в будущем при реализации слушателей событий, это то, что Вы объявили все свои события подписки с приоритетом 1. Возможно, вы устанавливаете слишком высокий приоритет в иерархии. Если вам не нужно явно выполнять ваш код перед любыми другими модулями Drupal или основными функциями, я бы опустил приоритет и просто оставил его пустым, чтобы использовалось значение по умолчанию (0), это обеспечит добавление вашего события в конец списка. Порядок выполнения может означать, что вы нарушаете функциональность других модулей / ядра, поэтому всегда будьте осторожны с этим.
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events[EntityTypeEvents::CREATE][] = ['onCreate'];
$events[EntityTypeEvents::UPDATE][] = ['onUpdate'];
$events[EntityTypeEvents::DELETE][] = ['onDelete'];
return $events;
}
Меньший код не доступен, вы также можете опустить $events = [];
, так как не нужно объявлять пустой массив.