You are here

abstract class ComponentEntityDisplayBase in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/migrate/src/Plugin/migrate/destination/ComponentEntityDisplayBase.php \Drupal\migrate\Plugin\migrate\destination\ComponentEntityDisplayBase

Provides a destination plugin for migrating entity display components.

Display modes provide different presentations for viewing ('view modes') or editing ('form modes') content. This destination plugin is an abstract base class for migrating fields and other components into view and form modes.

Hierarchy

Expanded class hierarchy of ComponentEntityDisplayBase

See also

\Drupal\migrate\Plugin\migrate\destination\PerComponentEntityDisplay

\Drupal\migrate\Plugin\migrate\destination\PerComponentEntityFormDisplay

2 files declare their use of ComponentEntityDisplayBase
DestinationCategoryTest.php in core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/DestinationCategoryTest.php
PerComponentEntityDisplayTest.php in core/modules/migrate/tests/src/Unit/destination/PerComponentEntityDisplayTest.php
Contains \Drupal\Tests\migrate\Unit\destination\PerComponentEntityDisplayTest.

File

core/modules/migrate/src/Plugin/migrate/destination/ComponentEntityDisplayBase.php, line 21

Namespace

Drupal\migrate\Plugin\migrate\destination
View source
abstract class ComponentEntityDisplayBase extends DestinationBase implements ContainerFactoryPluginInterface {
  const MODE_NAME = '';

  /**
   * The entity display repository.
   *
   * @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface
   */
  protected $entityDisplayRepository;

  /**
   * PerComponentEntityDisplay constructor.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\migrate\Plugin\MigrationInterface $migration
   *   The migration.
   * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
   *   The entity display repository service.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityDisplayRepositoryInterface $entity_display_repository = NULL) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
    if (!$entity_display_repository) {
      @trigger_error('The entity_display.repository service must be passed to PerComponentEntityDisplay::__construct(), it is required before Drupal 9.0.0. See https://www.drupal.org/node/2835616.', E_USER_DEPRECATED);
      $entity_display_repository = \Drupal::service('entity_display.repository');
    }
    $this->entityDisplayRepository = $entity_display_repository;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
    return new static($configuration, $plugin_id, $plugin_definition, $migration, $container
      ->get('entity_display.repository'));
  }

  /**
   * {@inheritdoc}
   */
  public function import(Row $row, array $old_destination_id_values = []) {
    $values = [];

    // array_intersect_key() won't work because the order is important because
    // this is also the return value.
    foreach (array_keys($this
      ->getIds()) as $id) {
      $values[$id] = $row
        ->getDestinationProperty($id);
    }
    $entity = $this
      ->getEntity($values['entity_type'], $values['bundle'], $values[static::MODE_NAME]);
    if (!$row
      ->getDestinationProperty('hidden')) {
      $entity
        ->setComponent($values['field_name'], $row
        ->getDestinationProperty('options') ?: []);
    }
    else {
      $entity
        ->removeComponent($values['field_name']);
    }
    $entity
      ->save();
    return array_values($values);
  }

  /**
   * {@inheritdoc}
   */
  public function getIds() {
    $ids['entity_type']['type'] = 'string';
    $ids['bundle']['type'] = 'string';
    $ids[static::MODE_NAME]['type'] = 'string';
    $ids['field_name']['type'] = 'string';
    return $ids;
  }

  /**
   * {@inheritdoc}
   */
  public function fields(MigrationInterface $migration = NULL) {

    // This is intentionally left empty.
  }

  /**
   * Gets the entity.
   *
   * @param string $entity_type
   *   The entity type to retrieve.
   * @param string $bundle
   *   The entity bundle.
   * @param string $mode
   *   The display mode.
   *
   * @return \Drupal\Core\Entity\Display\EntityDisplayInterface
   *   The entity display object.
   */
  protected abstract function getEntity($entity_type, $bundle, $mode);

}

Members

Namesort descending Modifiers Type Description Overrides
ComponentEntityDisplayBase::$entityDisplayRepository protected property The entity display repository.
ComponentEntityDisplayBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
ComponentEntityDisplayBase::fields public function Returns an array of destination fields. Overrides MigrateDestinationInterface::fields
ComponentEntityDisplayBase::getEntity abstract protected function Gets the entity. 3
ComponentEntityDisplayBase::getIds public function Gets the destination IDs. Overrides MigrateDestinationInterface::getIds
ComponentEntityDisplayBase::import public function Import the row. Overrides MigrateDestinationInterface::import
ComponentEntityDisplayBase::MODE_NAME constant 3
ComponentEntityDisplayBase::__construct public function PerComponentEntityDisplay constructor. Overrides DestinationBase::__construct 2
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
DestinationBase::$migration protected property The migration.
DestinationBase::$rollbackAction protected property The rollback action to be saved for the last imported item.
DestinationBase::$supportsRollback protected property Indicates whether the destination can be rolled back.
DestinationBase::checkRequirements public function Checks if requirements for this plugin are OK. Overrides RequirementsInterface::checkRequirements
DestinationBase::getDestinationModule public function Gets the destination module handling the destination data. Overrides MigrateDestinationInterface::getDestinationModule 1
DestinationBase::rollback public function Delete the specified destination object from the target Drupal. Overrides MigrateDestinationInterface::rollback 2
DestinationBase::rollbackAction public function The rollback action for the last imported item. Overrides MigrateDestinationInterface::rollbackAction
DestinationBase::setRollbackAction protected function For a destination item being updated, set the appropriate rollback action.
DestinationBase::supportsRollback public function Whether the destination can be rolled back or not. Overrides MigrateDestinationInterface::supportsRollback
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.