vendor/sonata-project/block-bundle/src/Block/Service/TemplateBlockService.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the Sonata Project package.
  5.  *
  6.  * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Sonata\BlockBundle\Block\Service;
  12. use Sonata\BlockBundle\Block\BlockContextInterface;
  13. use Sonata\BlockBundle\Form\Mapper\FormMapper;
  14. use Sonata\BlockBundle\Meta\Metadata;
  15. use Sonata\BlockBundle\Meta\MetadataInterface;
  16. use Sonata\BlockBundle\Model\BlockInterface;
  17. use Sonata\Form\Type\ImmutableArrayType;
  18. use Sonata\Form\Validator\ErrorElement;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\OptionsResolver\OptionsResolver;
  21. /**
  22.  * @author Thomas Rabaix <thomas.rabaix@sonata-project.org>
  23.  */
  24. final class TemplateBlockService extends AbstractBlockService implements EditableBlockService
  25. {
  26.     public function execute(BlockContextInterface $blockContext, ?Response $response null): Response
  27.     {
  28.         $template $blockContext->getTemplate();
  29.         \assert(null !== $template);
  30.         return $this->renderResponse($template, [
  31.             'block' => $blockContext->getBlock(),
  32.             'settings' => $blockContext->getSettings(),
  33.         ], $response);
  34.     }
  35.     public function configureCreateForm(FormMapper $formBlockInterface $block): void
  36.     {
  37.         $this->configureEditForm($form$block);
  38.     }
  39.     public function configureEditForm(FormMapper $formBlockInterface $block): void
  40.     {
  41.         $form->add('settings'ImmutableArrayType::class, [
  42.             'keys' => [
  43.                 ['template'null, [
  44.                     'label' => 'form.label_template',
  45.                     'translation_domain' => 'SonataBlockBundle',
  46.                 ]],
  47.             ],
  48.             'translation_domain' => 'SonataBlockBundle',
  49.         ]);
  50.     }
  51.     public function validate(ErrorElement $errorElementBlockInterface $block): void
  52.     {
  53.     }
  54.     public function configureSettings(OptionsResolver $resolver): void
  55.     {
  56.         $resolver->setDefaults([
  57.             'template' => '@SonataBlock/Block/block_template.html.twig',
  58.         ]);
  59.     }
  60.     public function getMetadata(): MetadataInterface
  61.     {
  62.         return new Metadata('sonata.block.service.template'nullnull'SonataBlockBundle', [
  63.             'class' => 'fa fa-code',
  64.         ]);
  65.     }
  66. }