eventDispatcher = $dispatcher; $this->user = $user->getUser(); } /** * {@inheritdoc} */ public function getFunctions() { return [ new TwigFunction('trigger', [$this, 'triggerEvent']), ]; } /** * @return EventDispatcherInterface */ protected function getDispatcher() { return $this->eventDispatcher; } /** * @param string $eventName * * @return bool */ protected function hasListener($eventName) { return $this->getDispatcher()->hasListeners($eventName); } /** * @param string $eventName * @param mixed $payload * @return ThemeEvent */ public function triggerEvent(string $eventName, $payload = null) { $themeEvent = new ThemeEvent($this->user, $payload); if ($this->hasListener($eventName)) { $this->getDispatcher()->dispatch($eventName, $themeEvent); } return $themeEvent; } }