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);
?>