Eventor

Categories

Component ID

2886406

Component name

Eventor

Component type

module

Maintenance status

Development status

Component security advisory coverage

covered

Downloads

267

Component created

Component changed

Component body

Simplifies dispatching and handling events. No need to keep track of underscored event names.

The main idea is to give your event class a readable name. The method name for handling that event in your event listener must be prefixed with when.

Examples:

Event: UserHasRegistered
Method: whenUserHasRegistered

Event: EmailWasSent
Method: whenEmailWasSent

How to use the module

1. Create your event class and pass any data to it that will be required for handling the event.

<?php

namespace Drupalmy_moduleEvents;

use SymfonyComponentEventDispatcherEvent;

class UserHasRegistered extends Event {

  public $user;

  public function __construct($user) {
    $this->user = $user;
  }

}
?>

2. Create your event listener by extending the EventListener class provided by the module. The method name for handling the event must follow the pattern when{EventClassName}.

<?php

namespace Drupalmy_moduleEventSubscriber;

use DrupaleventorEventListener;
use Drupalmy_moduleEventsUserHasRegistered;

/**
 * Class AdminNotifier.
 */
class AdminNotifier extends EventListener {

  public function whenUserHasRegistered(UserHasRegistered $event) {
    $registeredUser = $event->user; 
    
    // Notify site admin.
  }

}
?>

3. Register your event listener as a service in my_module.services.yml.

services:
  my_module.admin_notifier:
    class: Drupalmy_moduleEventSubscriberAdminNotifier
    arguments: []
    tags:
      - { name: event_subscriber }

4. Dispatch your event.

<?php

$event = new UserHasRegistered($user);
Drupal::service('eventor.event_dispatcher')->dispatch($event);
?>