function BundleConfigImportValidate::onConfigImporterValidate
Ensures bundles that will be deleted are not in use.
Parameters
\Drupal\Core\Config\ConfigImporterEvent $event: The config import event.
Overrides ConfigImportValidateEventSubscriberBase::onConfigImporterValidate
File
- 
              core/
lib/ Drupal/ Core/ Entity/ Event/ BundleConfigImportValidate.php, line 49  
Class
- BundleConfigImportValidate
 - Entity config importer validation event subscriber.
 
Namespace
Drupal\Core\Entity\EventCode
public function onConfigImporterValidate(ConfigImporterEvent $event) {
  foreach ($event->getChangelist('delete') as $config_name) {
    // Get the config entity type ID. This also ensure we are dealing with a
    // configuration entity.
    if ($entity_type_id = $this->configManager
      ->getEntityTypeIdByName($config_name)) {
      $entity_type = $this->entityTypeManager
        ->getDefinition($entity_type_id);
      // Does this entity type define a bundle of another entity type.
      if ($bundle_of = $entity_type->getBundleOf()) {
        // Work out if there are entities with this bundle.
        $bundle_of_entity_type = $this->entityTypeManager
          ->getDefinition($bundle_of);
        $bundle_id = ConfigEntityStorage::getIDFromConfigName($config_name, $entity_type->getConfigPrefix());
        $entity_query = $this->entityTypeManager
          ->getStorage($bundle_of)
          ->getQuery();
        $entity_ids = $entity_query->condition($bundle_of_entity_type->getKey('bundle'), $bundle_id)
          ->accessCheck(FALSE)
          ->range(0, 1)
          ->execute();
        if (!empty($entity_ids)) {
          $entity = $this->entityTypeManager
            ->getStorage($entity_type_id)
            ->load($bundle_id);
          $event->getConfigImporter()
            ->logError($this->t('Entities exist of type %entity_type and %bundle_label %bundle. These entities need to be deleted before importing.', [
            '%entity_type' => $bundle_of_entity_type->getLabel(),
            '%bundle_label' => $bundle_of_entity_type->getBundleLabel(),
            '%bundle' => $entity->label(),
          ]));
        }
      }
    }
  }
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.