Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. EntityConfigBase.php

function EntityConfigBase::updateEntity

Updates an entity with the contents of a row.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity to update.

\Drupal\migrate\Row $row: The row object to update from.

Return value

\Drupal\Core\Entity\EntityInterface An updated entity from row values.

Throws

\LogicException Thrown if the destination is for translations and either the "property" or "translation" property does not exist.

Overrides Entity::updateEntity

2 calls to EntityConfigBase::updateEntity()
EntitySearchPage::updateEntity in core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php
Updates an entity with the contents of a row.
EntitySearchPage::updateEntity in core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php
Updates an entity with the contents of a row.
1 method overrides EntityConfigBase::updateEntity()
EntitySearchPage::updateEntity in core/modules/search/src/Plugin/migrate/destination/EntitySearchPage.php
Updates an entity with the contents of a row.

File

core/modules/migrate/src/Plugin/migrate/destination/EntityConfigBase.php, line 203

Class

EntityConfigBase
Base destination class for importing configuration entities.

Namespace

Drupal\migrate\Plugin\migrate\destination

Code

protected function updateEntity(EntityInterface $entity, Row $row) {
    // This is a translation if the language in the active config does not
    // match the language of this row.
    $translation = FALSE;
    if ($this->isTranslationDestination() && $row->hasDestinationProperty('langcode') && $this->languageManager instanceof ConfigurableLanguageManager) {
        $config = $entity->getConfigDependencyName();
        $langcode = $this->configFactory
            ->get('langcode');
        if ($langcode != $row->getDestinationProperty('langcode')) {
            $translation = TRUE;
        }
    }
    if ($translation) {
        if (!$row->hasDestinationProperty('property')) {
            throw new \LogicException('The "property" property is required');
        }
        if (!$row->hasDestinationProperty('translation')) {
            throw new \LogicException('The "translation" property is required');
        }
        $config_override = $this->languageManager
            ->getLanguageConfigOverride($row->getDestinationProperty('langcode'), $config);
        $config_override->set(str_replace(Row::PROPERTY_SEPARATOR, '.', $row->getDestinationProperty('property')), $row->getDestinationProperty('translation'));
        $config_override->save();
    }
    else {
        foreach ($row->getRawDestination() as $property => $value) {
            $this->updateEntityProperty($entity, explode(Row::PROPERTY_SEPARATOR, $property), $value);
        }
        $this->setRollbackAction($row->getIdMap());
    }
    return $entity;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal