You are here

public function EntityReferenceLayoutServiceProvider::alter in Entity Reference with Layout 8

Modifies existing service definitions.

Parameters

ContainerBuilder $container: The ContainerBuilder whose service definitions can be altered.

Overrides ServiceProviderBase::alter

File

src/EntityReferenceLayoutServiceProvider.php, line 18

Class

EntityReferenceLayoutServiceProvider
Service Provider for Entity Reference Revisions.

Namespace

Drupal\entity_reference_layout

Code

public function alter(ContainerBuilder $container) {
  $modules = $container
    ->getParameter('container.modules');
  if (isset($modules['hal'])) {

    // Hal module is enabled, add our new normalizer for entity reference
    // revision items.
    $service_definition = new Definition('\\Drupal\\entity_reference_layout\\Normalizer\\EntityReferenceLayoutItemNormalizer', [
      new Reference('hal.link_manager'),
      new Reference('serializer.entity_resolver'),
    ]);

    // The priority must be higher than that of
    // serializer.normalizer.entity_reference_item.hal in
    // hal.services.yml.
    $service_definition
      ->addTag('normalizer', [
      'priority' => 20,
    ]);
    $container
      ->setDefinition('serializer.normalizer.entity_layout_revision_item', $service_definition);
  }

  // Check for installed Replicate module.
  if (isset($modules['replicate'])) {

    // Add a Replicate field event subscriber.
    $service_definition = new Definition('Drupal\\entity_reference_layout\\EventSubscriber\\ReplicateFieldSubscriber', [
      new Reference('replicate.replicator'),
    ]);
    $service_definition
      ->addTag('event_subscriber');
    $service_definition
      ->setPublic(TRUE);
    $container
      ->setDefinition('replicate.event_subscriber.entity_reference_layout', $service_definition);
  }
}