vendor/ibexa/connect/src/bundle/EventSubscriber/PageBuilderPreRenderEventSubscriber.php line 36

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\Bundle\Connect\EventSubscriber;
  8. use Ibexa\Connect\PageBuilder\BlockClient;
  9. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\BlockRenderEvents;
  10. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Event\PreRenderEvent;
  11. use Ibexa\FieldTypePage\FieldType\Page\Block\Renderer\Twig\TwigRenderRequest;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. final class PageBuilderPreRenderEventSubscriber implements EventSubscriberInterface
  14. {
  15.     public const IBEXA_CONNECT_BLOCK 'ibexa_connect_block';
  16.     private BlockClient $blockClient;
  17.     public function __construct(
  18.         BlockClient $blockClient
  19.     ) {
  20.         $this->blockClient $blockClient;
  21.     }
  22.     public static function getSubscribedEvents(): array
  23.     {
  24.         return [
  25.             BlockRenderEvents::getBlockPreRenderEventName(self::IBEXA_CONNECT_BLOCK) => 'preRenderEvent',
  26.         ];
  27.     }
  28.     public function preRenderEvent(PreRenderEvent $event): void
  29.     {
  30.         $renderRequest $event->getRenderRequest();
  31.         if (!$renderRequest instanceof TwigRenderRequest) {
  32.             return;
  33.         }
  34.         $blockValue $event->getBlockValue();
  35.         $data $this->blockClient->getExtraBlockData($blockValue);
  36.         $renderRequest->addParameter('ibexa_connect_data'$data);
  37.     }
  38. }