回答:
イベントを聞くことはできません。フックを使用するか、カスタムエンティティにpostSave()などのメソッドを実装できます。
エンティティの保存中に発生するフックとその他のイベントの順序は次のとおりです。
Entity::preSave()
エンティティオブジェクトとFieldItemListInterface::preSave()
フィールドオブジェクトで呼び出されます。hook_ENTITY_TYPE_presave()
hook_entity_presave()
Entity::postSave()
エンティティオブジェクトで呼び出されます。hook_ENTITY_TYPE_insert()
(新規)またはhook_ENTITY_TYPE_update()
(更新)hook_entity_insert()
(新規)またはhook_entity_update()
(更新)hook_entity_update
新しいオブジェクトをカバーしていないことに気づかなかった。新規または更新のフックはありませんよね?別の関数を作成し、両方のフックで1つの関数を呼び出す必要があります。
エンティティ関連のイベントをリッスンするのが理想的ですが、これらはまだ準備ができていません。「一致するエンティティフックのイベントを追加する」を参照してください。
とりあえず、フックから離れたい場合は、contribモジュールを使用できます:Hook Event Dispatcher
A 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'
}