annotate core/modules/layout_builder/src/LayoutBuilderServiceProvider.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@17 1 <?php
Chris@17 2
Chris@17 3 namespace Drupal\layout_builder;
Chris@17 4
Chris@17 5 use Drupal\Core\DependencyInjection\ContainerBuilder;
Chris@17 6 use Drupal\Core\DependencyInjection\ServiceProviderInterface;
Chris@17 7 use Drupal\layout_builder\EventSubscriber\SetInlineBlockDependency;
Chris@18 8 use Drupal\layout_builder\Normalizer\LayoutEntityDisplayNormalizer;
Chris@18 9 use Symfony\Component\DependencyInjection\ChildDefinition;
Chris@17 10 use Symfony\Component\DependencyInjection\Definition;
Chris@17 11 use Symfony\Component\DependencyInjection\Reference;
Chris@17 12
Chris@17 13 /**
Chris@17 14 * Sets the layout_builder.get_block_dependency_subscriber service definition.
Chris@17 15 *
Chris@17 16 * This service is dependent on the block_content module so it must be provided
Chris@17 17 * dynamically.
Chris@17 18 *
Chris@17 19 * @internal
Chris@18 20 * Service providers are internal.
Chris@17 21 *
Chris@17 22 * @see \Drupal\layout_builder\EventSubscriber\SetInlineBlockDependency
Chris@17 23 */
Chris@17 24 class LayoutBuilderServiceProvider implements ServiceProviderInterface {
Chris@17 25
Chris@17 26 /**
Chris@17 27 * {@inheritdoc}
Chris@17 28 */
Chris@17 29 public function register(ContainerBuilder $container) {
Chris@17 30 $modules = $container->getParameter('container.modules');
Chris@17 31 if (isset($modules['block_content'])) {
Chris@17 32 $definition = new Definition(SetInlineBlockDependency::class);
Chris@17 33 $definition->setArguments([
Chris@17 34 new Reference('entity_type.manager'),
Chris@17 35 new Reference('database'),
Chris@17 36 new Reference('inline_block.usage'),
Chris@18 37 new Reference('plugin.manager.layout_builder.section_storage'),
Chris@17 38 ]);
Chris@17 39 $definition->addTag('event_subscriber');
Chris@17 40 $container->setDefinition('layout_builder.get_block_dependency_subscriber', $definition);
Chris@17 41 }
Chris@18 42 if (isset($modules['serialization'])) {
Chris@18 43 $definition = (new ChildDefinition('serializer.normalizer.config_entity'))
Chris@18 44 ->setClass(LayoutEntityDisplayNormalizer::class)
Chris@18 45 // Ensure that this normalizer takes precedence for Layout Builder data
Chris@18 46 // over the generic serializer.normalizer.config_entity.
Chris@18 47 ->addTag('normalizer', ['priority' => 5]);
Chris@18 48 $container->setDefinition('layout_builder.normalizer.layout_entity_display', $definition);
Chris@18 49 }
Chris@17 50 }
Chris@17 51
Chris@17 52 }