Description
When you interact with the Public API, and with the content Repository in particular, Signals may be sent out, allowing you to react on actions triggered by the Repository. Those signals can be received by dedicated services called Slots.
This recipe will describe how to register a Slot for a dedicated Signal.
Solution
Registering a Slot for a given Signal
As described in the SignalSlot documentation, a Slot is roughly like an event listener and must extend eZ\Publish\Core\SignalSlot\Slot
.
A typical implementation is the following:
OnPublishSlot
now needs to be registered as a service in the ServiceContainer and identified as a valid Slot:
Service tag ezpublish.api.slot
identifies your service as a valid Slot. The signal part (mandatory) says that this slot is listening to ContentService\PublishVersionSignal
(shortcut for \eZ\Publish\Core\SignalSlot\Signal\ContentService\PublishVersionSignal
).
Using a basic Symfony event listener
eZ Platform comes with a generic slot that converts signals (including ones defined by user code) to regular event objects and exposes them via the EventDispatcher. This makes it possible to implement a simple event listener/subscriber if you're more comfortable with this approach.
All you need to do is to implement an event listener or subscriber and register it.
Example
This very simple example will just log the received signal.