diff --git a/core/lib/Drupal/Core/Entity/EntityBundleListener.php b/core/lib/Drupal/Core/Entity/EntityBundleListener.php index e3b219b39c17d8f31b5a24b7e8c890ebc3741dbf..e37317a020c06f62f9044dcc91a3ff8d7d980b9f 100644 --- a/core/lib/Drupal/Core/Entity/EntityBundleListener.php +++ b/core/lib/Drupal/Core/Entity/EntityBundleListener.php @@ -68,6 +68,7 @@ public function onBundleCreate($bundle, $entity_type_id) { } // Invoke hook_entity_bundle_create() hook. $this->moduleHandler->invokeAll('entity_bundle_create', [$entity_type_id, $bundle]); + $this->entityFieldManager->clearCachedFieldDefinitions(); } /** diff --git a/core/lib/Drupal/Core/Entity/EntityFieldManager.php b/core/lib/Drupal/Core/Entity/EntityFieldManager.php index f847cfa3840bb99cfab6044ded65e7e57308b888..88186c6706881e2276c3981596c3e436b20904b1 100644 --- a/core/lib/Drupal/Core/Entity/EntityFieldManager.php +++ b/core/lib/Drupal/Core/Entity/EntityFieldManager.php @@ -497,7 +497,7 @@ public function getFieldMap() { } } - $this->cacheSet($cid, $this->fieldMap, Cache::PERMANENT, ['entity_types']); + $this->cacheSet($cid, $this->fieldMap, Cache::PERMANENT, ['entity_types', 'entity_field_info']); } } return $this->fieldMap; diff --git a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentSettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentSettingsTest.php index 546ab25e03414209ef5b3d73146042994bebe77c..57439d588d1bb6f31ac87123ae71af98cd90e3d3 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentSettingsTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d6/MigrateLanguageContentSettingsTest.php @@ -25,6 +25,7 @@ protected function setUp() { parent::setUp(); $this->installConfig(['node']); + $this->installEntitySchema('node'); $this->executeMigrations(['d6_node_type', 'd6_language_content_settings']); } diff --git a/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentSettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentSettingsTest.php index e584467c92174c628e9f9ca0eb890225b5b0c952..3a07698d322c9134b1bb8eef78b09cb3d0e7dc89 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentSettingsTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageContentSettingsTest.php @@ -25,6 +25,7 @@ protected function setUp() { parent::setUp(); $this->installConfig(['node']); + $this->installEntitySchema('node'); $this->executeMigrations(['d7_node_type', 'd7_language_content_settings']); } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityBundleListenerTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityBundleListenerTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c5ace377492b6713d38687d2d34d28de0cf93797 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityBundleListenerTest.php @@ -0,0 +1,35 @@ +container->get('entity_field.manager')->getFieldMap(); + $expected = [ + 'entity_test' => 'entity_test', + ]; + $this->assertEquals($expected, $field_map['entity_test']['id']['bundles']); + + entity_test_create_bundle('custom'); + $field_map = $this->container->get('entity_field.manager')->getFieldMap(); + $expected = [ + 'entity_test' => 'entity_test', + 'custom' => 'custom', + ]; + $this->assertSame($expected, $field_map['entity_test']['id']['bundles']); + } + +}