/** * {@inheritdoc} */ public static function calculateDependencies(FieldDefinitionInterface $field_definition) { $dependencies = parent::calculateDependencies($field_definition); $manager = \Drupal::entityManager(); $target_entity_type = $manager->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type')); // Depend on default values entity types configurations. if ($default_value = $field_definition->getDefaultValueLiteral()) { foreach ($default_value as $value) { if (is_array($value) && isset($value['target_uuid'])) { $entity = \Drupal::entityManager()->loadEntityByUuid($target_entity_type->id(), $value['target_uuid']); // If the entity does not exist do not create the dependency. // @see \Drupal\Core\Field\EntityReferenceFieldItemList::processDefaultValue() if ($entity) { $dependencies[$target_entity_type->getConfigDependencyKey()][] = $entity->getConfigDependencyName(); } } } } // Depend on target bundle configurations. Dependencies for 'target_bundles' // also covers the 'auto_create_bundle' setting, if any, because its value // is included in the 'target_bundles' list. $handler = $field_definition->getSetting('handler_settings'); if (!empty($handler['target_bundles'])) { if ($bundle_entity_type_id = $target_entity_type->getBundleEntityType()) { if ($storage = $manager->getStorage($bundle_entity_type_id)) { foreach ($storage->loadMultiple($handler['target_bundles']) as $bundle) { $dependencies[$bundle->getConfigDependencyKey()][] = $bundle->getConfigDependencyName(); } } } } return $dependencies; }