commerce_api-8.x-1.x-dev/src/CommerceApiServiceProvider.php

src/CommerceApiServiceProvider.php
<?php

namespace Drupal\commerce_api;

use Drupal\commerce_api\EventSubscriber\ShippingProfileSubscriber;
use Drupal\commerce_api\Normalizer\ShipmentItemNormalizer;
use Drupal\commerce_api\ResourceType\ResourceTypeRepositoryShim;
use Drupal\commerce_api\Routing\CrossBundlesRouteSubscriber;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;
use Symfony\Component\DependencyInjection\Reference;

class CommerceApiServiceProvider extends ServiceProviderBase {

  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container) {
    // We cannot use the module handler as the container is not yet compiled.
    // @see \Drupal\Core\DrupalKernel::compileContainer()
    $modules = $container->getParameter('container.modules');

    if (isset($modules['commerce_shipping'])) {
      $container->register('commerce_api.shipping_profile_subscriber', ShippingProfileSubscriber::class)
        ->addArgument(new Reference('commerce_shipping.order_manager'))
        ->addArgument(new Reference('entity_type.manager'))
        ->addTag('event_subscriber');
      if ($container->hasDefinition('commerce_shipping.normalizer.shipment_item')) {
        $container->getDefinition('commerce_shipping.normalizer.shipment_item')
          ->setClass(ShipmentItemNormalizer::class)
          ->addArgument(new Reference('entity_type.manager'));
      }
    }
    // Workarounds for JSON:API Cross Bundles.
    if (isset($modules['jsonapi_cross_bundles'])) {
      $container->getDefinition('jsonapi_cross_bundles.resource_type_repository_shim')
        ->setClass(ResourceTypeRepositoryShim::class);
      $container->register('commerce_api.cross_bundles_route_subscriber', CrossBundlesRouteSubscriber::class)
        ->addTag('event_subscriber');
    }

    // Enable normalizers in the "src-impostor-normalizers" directory to be
    // within the \Drupal\jsonapi\Normalizer namespace in order to circumvent
    // the encapsulation enforced by
    // \Drupal\jsonapi\Serializer\Serializer::__construct().
    // @todo remove after https://www.drupal.org/project/drupal/issues/3100732
    $container_namespaces = $container->getParameter('container.namespaces');
    $impostor_path = dirname($modules['commerce_api']['pathname']) . '/src/Normalizer/CommerceApiImposter';
    $container_namespaces['Drupal\jsonapi\Normalizer\CommerceApiImposter'][] = $impostor_path;
    $container->getDefinition('commerce_api.normalizer.resource_object.jsonapi')->setFile($impostor_path . '/EnhancedResourceObjectNormalizer.php');
    $container->getDefinition('commerce_api.normalizer.relationship.jsonapi')->setFile($impostor_path . '/MetaRelationshipNormalizer.php');
    $container->setParameter('container.namespaces', $container_namespaces);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc