diff --git a/src/Plugin/Deriver/EntityFieldDeriver.php b/src/Plugin/Deriver/EntityFieldDeriver.php index 7feac5d..4e6875a 100644 --- a/src/Plugin/Deriver/EntityFieldDeriver.php +++ b/src/Plugin/Deriver/EntityFieldDeriver.php @@ -72,12 +72,17 @@ class EntityFieldDeriver extends DeriverBase implements ContainerDeriverInterfac $admin_label = $bundle_field_definitions[$field_name]->getLabel(); } + // Setup the entity context definition to require an entity of a + // bundle which this field is on. + $entity_context_definition = new ContextDefinition('entity:' . $entity_type_id, $entity_type_labels[$entity_type_id], TRUE); + $entity_context_definition->addConstraint('Bundle', ['value' => $field_info['bundles']]); + // Set plugin definition for derivative. $derivative = $base_plugin_definition; $derivative['category'] = $this->t('@entity fields', array('@entity' => $entity_type_labels[$entity_type_id])); $derivative['admin_label'] = $admin_label; $derivative['context'] = [ - 'entity' => new ContextDefinition('entity:' . $entity_type_id, $entity_type_labels[$entity_type_id], TRUE), + 'entity' => $entity_context_definition, ]; $this->derivatives[$derivative_id] = $derivative;