Antworten:
Sie können kein Ereignis anhören. Sie können entweder einen Hook verwenden oder eine Methode wie postSave () in Ihrer benutzerdefinierten Entität implementieren.
Hier ist die Reihenfolge der Hooks und anderer Ereignisse, die während des Speicherns einer Entität auftreten:
Entity::preSave()
wird für Entitätsobjekte und FieldItemListInterface::preSave()
für Feldobjekte aufgerufen .hook_ENTITY_TYPE_presave()
hook_entity_presave()
Entity::postSave()
wird für das Entitätsobjekt aufgerufen.hook_ENTITY_TYPE_insert()
(neu) oder hook_ENTITY_TYPE_update()
(Update)hook_entity_insert()
(neu) oder hook_entity_update()
(Update)hook_entity_update
es keine neuen Objekte gibt. Es gibt keinen Haken für neue oder aktualisierte, oder? Ich müsste eine andere Funktion erstellen und beide Hooks dazu bringen, die eine Funktion aufzurufen.
Idealerweise würden Sie auf entitätsbezogene Ereignisse warten, diese sind jedoch noch nicht fertig. Siehe "Ereignisse für übereinstimmende Entity-Hooks hinzufügen" .
Wenn Sie sich vorerst von Hooks fernhalten möchten, können Sie ein Contrib-Modul verwenden: Hook Event Dispatcher
A node
ist ein Entitätstyp, also hook_ENTITY_TYPE_update(..
dasselbe wie hook_node_update(..
,
function hook_node_update(Drupal\Core\Entity\EntityInterface $entity) {
//$entity->bundle() - 'article' 'page'
}
oder
function hook_customentity_update(Drupal\Core\Entity\EntityInterface $entity{
//$entity->bundle() - 'awesome_entity_bundle'
}