htools-8.x-1.x-dev/src/Plugin/Derivative/EntityTypeBlockDeriver.php

src/Plugin/Derivative/EntityTypeBlockDeriver.php
<?php

namespace Drupal\htools\Plugin\Derivative;

use Drupal\Core\Plugin\Context\EntityContextDefinition;
use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\layout_builder\Plugin\Derivative\FieldBlockDeriver;

/**
 * Provides entity type block definitions for every entity type.
 *
 * @internal
 *   Plugin derivers are internal.
 */
class EntityTypeBlockDeriver extends FieldBlockDeriver implements ContainerDeriverInterface {

  use StringTranslationTrait;

  /**
   * The entity type repository.
   *
   * @var \Drupal\Core\Entity\EntityTypeRepositoryInterface
   */
  protected $entityTypeRepository;

  /**
   * The field type manager.
   *
   * @var \Drupal\Core\Field\FieldTypePluginManagerInterface
   */
  protected $fieldTypeManager;

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition) {
    $entity_type_labels = $this->entityTypeRepository->getEntityTypeLabels();
    foreach ($this->entityFieldManager->getFieldMap() as $entity_type_id => $entity_field_map) {

      $derivative = $base_plugin_definition;
      $derivative['admin_label'] = $entity_type_labels[$entity_type_id];
      $context_definition = EntityContextDefinition::fromEntityTypeId($entity_type_id)
        ->setLabel($entity_type_labels[$entity_type_id]);

      $derivative['context_definitions'] = [
        'entity' => $context_definition,
      ];

      $derivative_id = $entity_type_id;
      $this->derivatives[$derivative_id] = $derivative;

    }
    return $this->derivatives;
  }

}

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

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