エンティティが更新されたときにhook_entity_update()
フックを使用して何かを実行できることを知っています。しかし、ノードの更新/削除、またはそのような他のエンティティをリッスンするイベントはありますか?
イベントを聞くことはできません。フックを使用するか、カスタムエンティティにpostSave()などのメソッドを実装できます。
エンティティの保存中に発生するフックとその他のイベントの順序は次のとおりです。
Entity::preSave()
はエンティティオブジェクトで呼び出され、 FieldItemListInterface::preSave()
はフィールドオブジェクトで呼び出されます。hook_ENTITY_TYPE_presave()
hook_entity_presave()
Entity::postSave()
がエンティティオブジェクトで呼び出されます。hook_ENTITY_TYPE_insert()
(new)または hook_ENTITY_TYPE_update()
(update)hook_entity_insert()
(new)または hook_entity_update()
(update)エンティティ関連のイベントをリッスンするのが理想的ですが、これらはまだ準備ができていません。 "一致するエンティティフックのイベントを追加する" を参照してください。
とりあえず、フックから離れたい場合は、contribモジュールを使用できます。 Hook Event Dispatcher
node
はエンティティタイプであるため、hook_ENTITY_TYPE_update(..
はhook_node_update(..
と同じです。
function hook_node_update(Drupal\Core\Entity\EntityInterface $entity) {
//$entity->bundle() - 'article' 'page'
}
または
function hook_customentity_update(Drupal\Core\Entity\EntityInterface $entity{
//$entity->bundle() - 'awesome_entity_bundle'
}