<?php
declare(strict_types=0);
namespace WellCommerce\Bundle\CmsBundle\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use WellCommerce\Bundle\AppBundle\Service\Metadata\Helper\MetadataHelper;
use WellCommerce\Bundle\CmsBundle\Entity\Page;
use WellCommerce\Bundle\CmsBundle\Request\PageRequestStorage;
class CmsSubscriber implements EventSubscriberInterface
{
protected MetadataHelper $metadataHelper;
protected PageRequestStorage $pageRequestStorage;
public function __construct(MetadataHelper $metadataHelper, PageRequestStorage $pageRequestStorage)
{
$this->metadataHelper = $metadataHelper;
$this->pageRequestStorage = $pageRequestStorage;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::CONTROLLER_ARGUMENTS => ['onControllerArguments'],
];
}
public function onControllerArguments(ControllerArgumentsEvent $event)
{
$arguments = $event->getArguments();
foreach ($arguments as $argument) {
if ($argument instanceof Page) {
$this->pageRequestStorage->setCurrentPage($argument);
$this->metadataHelper->setMetadata($argument->translate()->getMeta());
}
}
}
}