mirror of
https://github.com/Karaka-Management/Developer-Guide.git
synced 2026-01-15 22:18:41 +00:00
47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# Events
|
|
|
|
Events are available in the frontend and the backend. Both implementations provide the same functionality and are implemented in a similar way.
|
|
|
|
## Creating Events
|
|
|
|
Every event requires a unique trigger key as well as a `\Closure` which should be called once the event is triggered.
|
|
|
|
```
|
|
$this->eventManager->attach('eventId', function() { echo 'Hello World'; });
|
|
```
|
|
|
|
If a event should only be able to be triggered once another boolean parameter has to be edded to the `attach()` function call.
|
|
|
|
```
|
|
$this->eventManager->attach('eventId', function() { echo 'Hello World'; }, true);
|
|
```
|
|
|
|
Now the event will be removed from the event manager once executed.
|
|
|
|
## Triggering Events
|
|
|
|
An event can be triggered by calling the `trigger()` function.
|
|
|
|
```
|
|
$this->eventManager->trigger('eventId');
|
|
```
|
|
|
|
## Multi Condition Events
|
|
|
|
In some cases it is required that multiple conditions are met before an event is supposed to be triggered. This can be achived by registering these conditions through the `addGroup()` function.
|
|
|
|
```
|
|
$this->eventManager->addGroup('eventId', 'conditionName');
|
|
$this->eventManager->addGroup('eventId', 'conditionName2');
|
|
```
|
|
|
|
Now the event will only be triggered once every registered condition was triggered.
|
|
|
|
```
|
|
$this->eventManager->trigger('eventId', 'conditionName'); // No output
|
|
$this->eventManager->trigger('eventId', 'conditionName2'); // Hello World
|
|
$this->eventManager->trigger('eventId'); // Hello World
|
|
$this->eventManager->trigger('eventId', 'conditionName'); // Hello World
|
|
```
|
|
|
|
The order in which these conditions are triggered doesn't mapper. A multi condition event SHOULD be atteched with the optional boolean parameter `true`. These events can only be executed once and will be removed afterwards. In case the optional boolean parameter was not set to `true` the event will remain in the event manager and will be triggered whenever `trigger('eventId')` is called. |