hook_entity_insert

Главные вкладки

Аватар пользователя gera8774 gera8774 28 марта в 12:07

Всем привет! Столкнулась с проблемой - не срабатывает функция hook_entity_insert
Для теста просто пытаюсь написать функцию, чтобы при создании любой новой сущности приходило письмо на почту или создавался новый материал определенного типа. Но функция просто игнорируется
С почтой всё хорошо, если что. Например с hook_entity_presave всё отлично срабатывает. Что я делаю не так?

Примеры:
function mymod_entity_insert(Drupal\Core\Entity\EntityInterface $entity) {
if ($entity->getEntityTypeId() == 'node' && $entity->getType() == 'page') {
$node = \Drupal\node\Entity\Node::create([
'type' => 'article',
'title' => 'New page created',
]);
$node->save();
mail('mymail@mail.ru', 'ggg', 'new entity');
}
}

или так

function mymod_entity_insert(Drupal\Core\Entity\EntityInterface $entity) {
mail('mymail@mail.ru', 'test', 'new entity');
}

Если заменяю insert на presave, обе функции срабатывают

Комментарии

Аватар пользователя OldWarrior OldWarrior 28 марта в 19:55

Скорее всего, presave был изначально в модуле, с него, возможно, как бы начали всё писать. Код модуля при первой отработке этого хука попал в кеш. Дальнейшие добавления новых хуков не давали эффекта кроме presave - до очистки кеша. Думаю, как-то так было.