diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php index 29e00a3..731adda 100644 --- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php +++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php @@ -285,8 +285,18 @@ public function hasNewEntity() { */ public static function calculateDependencies(FieldDefinitionInterface $field_definition) { $dependencies = []; + // Create dependencies on target bundles. + $target_entity_type = \Drupal::entityManager()->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type')); + $handler_settings = $field_definition->getSetting('handler_settings'); + if (isset($handler_settings['target_bundles'])) { + foreach ($handler_settings['target_bundles'] as $target_bundle) { + // Create dependency on the bundle. + $bundle_config_dependency = $target_entity_type->getBundleConfigDependency($target_bundle); + $dependencies[$bundle_config_dependency['type']][] = $bundle_config_dependency['name']; + } + } + // Create dependencies on default value entities, if any. if ($default_value = $field_definition->getDefaultValueLiteral()) { - $target_entity_type = \Drupal::entityManager()->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type')); foreach ($default_value as $value) { if (is_array($value) && isset($value['target_uuid'])) { $entity = \Drupal::entityManager()->loadEntityByUuid($target_entity_type->id(), $value['target_uuid']);