Drupal 8エンティティには、私が聞くことができるイベントがありますか?


7

hook_entity_update()エンティティが更新されたときにフックを使用して何かを実行できることはわかっています。しかし、ノードの更新/削除、またはそのような他のエンティティをリッスンするイベントはありますか?

回答:


14

イベントを聞くことはできません。フックを使用するか、カスタムエンティティにpostSave()などのメソッドを実装できます。

エンティティの保存中に発生するフックとその他のイベントの順序は次のとおりです。


それで、エンティティはサブスクライブできるイベントをディスパッチしませんか?フックを使用する必要がありますか?
John

1
はい、多くのDrupal固有のイベントがまだフックされています。最終的にすべてのフックが置き換えられます。drupal.org / node/ 1509164およびdrupal.org/node/1972304を参照してください。
4k4

すばらしい答えです。hook_entity_update新しいオブジェクトをカバーしていないことに気づかなかった。新規または更新のフックはありませんよね?別の関数を作成し、両方のフックで1つの関数を呼び出す必要があります。
不明な開発

3

エンティティ関連のイベントをリッスンするのが理想的ですが、これらはまだ準備ができていません。「一致するエンティティフックのイベントを追加する」を参照してください。

とりあえず、フックから離れたい場合は、contribモジュールを使用できます:Hook Event Dispatcher


4
ディスカッションに何かを追加していると思いました。反対票を投じた場合は、コメントを残して理由を説明してください。これは私の答えを改善するのに役立ちます。ありがとう。
imclean

1

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'
}

https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!entity.api.php/function/hook_ENTITY_TYPE_update/8.2.x

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.