You are here

public function EntityContentBase::validateEntity in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::validateEntity()
  2. 9 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::validateEntity()

Validates the entity.

Parameters

\Drupal\Core\Entity\FieldableEntityInterface $entity: The entity to validate.

Throws

\Drupal\migrate\Exception\EntityValidationException When the validation didn't succeed.

Overrides MigrateValidatableEntityInterface::validateEntity

1 call to EntityContentBase::validateEntity()
EntityContentBase::import in core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php

File

core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php, line 202

Class

EntityContentBase
Provides destination class for all content entities lacking a specific class.

Namespace

Drupal\migrate\Plugin\migrate\destination

Code

public function validateEntity(FieldableEntityInterface $entity) {

  // Entity validation can require the user that owns the entity. Switch to
  // use that user during validation.
  // As an example:
  // @see \Drupal\Core\Entity\Plugin\Validation\Constraint\ValidReferenceConstraint
  $account = $entity instanceof EntityOwnerInterface ? $entity
    ->getOwner() : NULL;

  // Validate account exists as the owner reference could be invalid for any
  // number of reasons.
  if ($account) {
    $this->accountSwitcher
      ->switchTo($account);
  }

  // This finally block ensures that the account is always switched back, even
  // if an exception was thrown. Any validation exceptions are intentionally
  // left unhandled. They should be caught and logged by a catch block
  // surrounding the row import and then added to the migration messages table
  // for the current row.
  try {
    $violations = $entity
      ->validate();
  } finally {
    if ($account) {
      $this->accountSwitcher
        ->switchBack();
    }
  }
  if (count($violations) > 0) {
    throw new EntityValidationException($violations);
  }
}