class ComponentEntityDisplayBase

Same name in other branches
  1. 9 core/modules/migrate/src/Plugin/migrate/destination/ComponentEntityDisplayBase.php \Drupal\migrate\Plugin\migrate\destination\ComponentEntityDisplayBase
  2. 8.9.x core/modules/migrate/src/Plugin/migrate/destination/ComponentEntityDisplayBase.php \Drupal\migrate\Plugin\migrate\destination\ComponentEntityDisplayBase
  3. 11.x 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

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) {
        parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
        $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() {
        // 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

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
ComponentEntityDisplayBase::$entityDisplayRepository protected property The entity display repository.
ComponentEntityDisplayBase::create public static function Overrides ContainerFactoryPluginInterface::create
ComponentEntityDisplayBase::fields public function Overrides MigrateDestinationInterface::fields
ComponentEntityDisplayBase::getEntity abstract protected function Gets the entity. 3
ComponentEntityDisplayBase::getIds public function Overrides MigrateDestinationInterface::getIds
ComponentEntityDisplayBase::import public function Overrides MigrateDestinationInterface::import
ComponentEntityDisplayBase::MODE_NAME constant 3
ComponentEntityDisplayBase::__construct public function PerComponentEntityDisplay constructor. Overrides DestinationBase::__construct 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 Overrides RequirementsInterface::checkRequirements
DestinationBase::getDestinationModule public function Overrides MigrateDestinationInterface::getDestinationModule 1
DestinationBase::rollback public function Overrides MigrateDestinationInterface::rollback 2
DestinationBase::rollbackAction public function Overrides MigrateDestinationInterface::rollbackAction
DestinationBase::setRollbackAction protected function For a destination item being updated, set the appropriate rollback action.
DestinationBase::supportsRollback public function Overrides MigrateDestinationInterface::supportsRollback
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin ID of the plugin instance. 2

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.