vendor/bitbag/cms-plugin/src/Controller/BlockController.php line 26

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file was created by developers working at BitBag
  4.  * Do you need more information about us and what we do? Visit our https://bitbag.io website!
  5.  * We are hiring developers from all over the world. Join us and start your new, exciting adventure and become part of us: https://bitbag.io/career
  6. */
  7. declare(strict_types=1);
  8. namespace BitBag\SyliusCmsPlugin\Controller;
  9. use BitBag\SyliusCmsPlugin\Entity\BlockInterface;
  10. use BitBag\SyliusCmsPlugin\Resolver\BlockResourceResolverInterface;
  11. use FOS\RestBundle\View\View;
  12. use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
  13. use Sylius\Component\Resource\ResourceActions;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Webmozart\Assert\Assert;
  17. final class BlockController extends ResourceController
  18. {
  19.     public const BLOCK_TEMPLATE '@BitBagSyliusCmsPlugin/Shop/Block/show.html.twig';
  20.     public function renderBlockAction(Request $request): Response
  21.     {
  22.         $configuration $this->requestConfigurationFactory->create($this->metadata$request);
  23.         $this->isGrantedOr403($configurationResourceActions::SHOW);
  24.         $code $request->get('code');
  25.         /** @var BlockResourceResolverInterface $blockResourceResolver */
  26.         $blockResourceResolver $this->get('bitbag_sylius_cms_plugin.resolver.block_resource');
  27.         $block $blockResourceResolver->findOrLog($code);
  28.         if (null === $block) {
  29.             return new Response();
  30.         }
  31.         $this->eventDispatcher->dispatch(ResourceActions::SHOW$configuration$block);
  32.         if (!$configuration->isHtmlRequest()) {
  33.             Assert::true(null !== $this->viewHandler);
  34.             return $this->viewHandler->handle($configurationView::create($block));
  35.         }
  36.         $template $request->get('template') ?? self::BLOCK_TEMPLATE;
  37.         return $this->render($template, [
  38.             'configuration' => $configuration,
  39.             'metadata' => $this->metadata,
  40.             'resource' => $block,
  41.             $this->metadata->getName() => $block,
  42.         ]);
  43.     }
  44.     public function previewAction(Request $request): Response
  45.     {
  46.         $configuration $this->requestConfigurationFactory->create($this->metadata$request);
  47.         $this->isGrantedOr403($configurationResourceActions::CREATE);
  48.         /** @var BlockInterface $block */
  49.         $block $this->newResourceFactory->create($configuration$this->factory);
  50.         $form $this->resourceFormFactory->create($configuration$block);
  51.         $form->handleRequest($request);
  52.         /** @var BlockInterface $block */
  53.         $block $form->getData();
  54.         $defaultLocale $this->getParameter('locale');
  55.         $block->setFallbackLocale($request->get('_locale'$defaultLocale));
  56.         $block->setCurrentLocale($request->get('_locale'$defaultLocale));
  57.         if (!$configuration->isHtmlRequest()) {
  58.             Assert::true(null !== $this->viewHandler);
  59.             return $this->viewHandler->handle($configurationView::create($block));
  60.         }
  61.         return $this->render($configuration->getTemplate(ResourceActions::CREATE '.html'), [
  62.             'resource' => $block,
  63.             $this->metadata->getName() => $block,
  64.             'blockTemplate' => self::BLOCK_TEMPLATE,
  65.         ]);
  66.     }
  67. }