diff --git a/modules/ctools_block/src/Plugin/Deriver/EntityFieldDeriver.php b/modules/ctools_block/src/Plugin/Deriver/EntityFieldDeriver.php index 749aae0..f414e2c 100644 --- a/modules/ctools_block/src/Plugin/Deriver/EntityFieldDeriver.php +++ b/modules/ctools_block/src/Plugin/Deriver/EntityFieldDeriver.php @@ -21,14 +21,22 @@ class EntityFieldDeriver extends EntityDeriverBase { public function getDerivativeDefinitions($base_plugin_definition) { $entity_type_labels = $this->entityManager->getEntityTypeLabels(); foreach ($this->entityManager->getFieldMap() as $entity_type_id => $entity_field_map) { - foreach ($this->entityManager->getFieldStorageDefinitions($entity_type_id) as $field_definition) { - $field_name = $field_definition->getName(); + foreach ($this->entityManager->getFieldStorageDefinitions($entity_type_id) as $field_storage_definition) { + $field_name = $field_storage_definition->getName(); + + // The blocks are based on fields. However, we are looping through field + // storages for which no fields may exist. If that is the case, skip + // this field storage. + if (!isset($entity_field_map[$field_name])) { + continue; + } + $field_info = $entity_field_map[$field_name]; $derivative_id = $entity_type_id . ":" . $field_name; // Get the admin label for both base and configurable fields. - if ($field_definition->isBaseField()) { - $admin_label = $field_definition->getLabel(); + if ($field_storage_definition->isBaseField()) { + $admin_label = $field_storage_definition->getLabel(); } else { // We take the field label used on the first bundle.