vendor/ibexa/twig-components/src/lib/Component/EventSubscriber/TwigComponentCollectorSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. /**
  3. * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4. * @license For full copyright and license information view LICENSE file distributed with this source code.
  5. */
  6. declare(strict_types=1);
  7. namespace Ibexa\TwigComponents\Component\EventSubscriber;
  8. use Ibexa\Contracts\TwigComponents\Event\RenderGroupEvent;
  9. use Ibexa\Contracts\TwigComponents\Event\RenderSingleEvent;
  10. use Ibexa\TwigComponents\DataCollector\TwigComponentCollector;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. final class TwigComponentCollectorSubscriber implements EventSubscriberInterface
  13. {
  14. private TwigComponentCollector $collector;
  15. public function __construct(TwigComponentCollector $collector)
  16. {
  17. $this->collector = $collector;
  18. }
  19. public static function getSubscribedEvents(): array
  20. {
  21. return [
  22. RenderGroupEvent::class => ['onRenderGroup', 50],
  23. RenderSingleEvent::class => ['onRenderSingle', 50],
  24. ];
  25. }
  26. public function onRenderGroup(RenderGroupEvent $event): void
  27. {
  28. $this->collector->addAvailableGroups($event->getGroupName());
  29. }
  30. public function onRenderSingle(RenderSingleEvent $event): void
  31. {
  32. $this->collector->addRenderedComponent($event->getGroupName(), $event->getName(), $event->getComponent());
  33. }
  34. }