EntityTypeEventSubscriberTrait.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace Drupal\Core\Entity;
  3. /**
  4. * Helper methods for EntityTypeListenerInterface.
  5. *
  6. * This allows a class implementing EntityTypeListenerInterface to subscribe and
  7. * react to entity type events.
  8. *
  9. * @see \Symfony\Component\EventDispatcher\EventSubscriberInterface
  10. * @see \Drupal\Core\Entity\EntityTypeListenerInterface
  11. */
  12. trait EntityTypeEventSubscriberTrait {
  13. /**
  14. * Gets the subscribed events.
  15. *
  16. * @return array
  17. * An array of subscribed event names.
  18. *
  19. * @see \Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents()
  20. */
  21. public static function getEntityTypeEvents() {
  22. $event = ['onEntityTypeEvent', 100];
  23. $events[EntityTypeEvents::CREATE][] = $event;
  24. $events[EntityTypeEvents::UPDATE][] = $event;
  25. $events[EntityTypeEvents::DELETE][] = $event;
  26. return $events;
  27. }
  28. /**
  29. * Listener method for any entity type definition event.
  30. *
  31. * @param \Drupal\Core\Entity\EntityTypeEvent $event
  32. * The field storage definition event object.
  33. * @param string $event_name
  34. * The event name.
  35. */
  36. public function onEntityTypeEvent(EntityTypeEvent $event, $event_name) {
  37. switch ($event_name) {
  38. case EntityTypeEvents::CREATE:
  39. $this->onEntityTypeCreate($event->getEntityType());
  40. break;
  41. case EntityTypeEvents::UPDATE:
  42. $this->onEntityTypeUpdate($event->getEntityType(), $event->getOriginal());
  43. break;
  44. case EntityTypeEvents::DELETE:
  45. $this->onEntityTypeDelete($event->getEntityType());
  46. break;
  47. }
  48. }
  49. /**
  50. * {@inheritdoc}
  51. */
  52. public function onEntityTypeCreate(EntityTypeInterface $entity_type) {
  53. }
  54. /**
  55. * {@inheritdoc}
  56. */
  57. public function onEntityTypeUpdate(EntityTypeInterface $entity_type, EntityTypeInterface $original) {
  58. }
  59. /**
  60. * {@inheritdoc}
  61. */
  62. public function onEntityTypeDelete(EntityTypeInterface $entity_type) {
  63. }
  64. }