function hook_entity_bundle_field_info

Same name in other branches
  1. 9 core/lib/Drupal/Core/Entity/entity.api.php \hook_entity_bundle_field_info()
  2. 8.9.x core/lib/Drupal/Core/Entity/entity.api.php \hook_entity_bundle_field_info()
  3. 10 core/lib/Drupal/Core/Entity/entity.api.php \hook_entity_bundle_field_info()

Provides field definitions for a specific bundle within an entity type.

Bundle fields either have to override an existing base field, or need to provide a field storage definition via hook_entity_field_storage_info() unless they are computed.

@todo WARNING: This hook will be changed in https://www.drupal.org/node/2346347.

Parameters

\Drupal\Core\Entity\EntityTypeInterface $entity_type: The entity type definition.

string $bundle: The bundle.

\Drupal\Core\Field\FieldDefinitionInterface[] $base_field_definitions: The list of base field definitions for the entity type.

Return value

\Drupal\Core\Field\FieldDefinitionInterface[] An array of bundle field definitions, keyed by field name.

See also

hook_entity_base_field_info()

hook_entity_base_field_info_alter()

hook_entity_field_storage_info()

hook_entity_field_storage_info_alter()

hook_entity_bundle_field_info_alter()

\Drupal\Core\Field\FieldDefinitionInterface

\Drupal\Core\Field\FieldDefinition

\Drupal\Core\Entity\EntityFieldManagerInterface::getFieldDefinitions()

Related topics

2 functions implement hook_entity_bundle_field_info()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

entity_schema_test_entity_bundle_field_info in core/modules/system/tests/modules/entity_schema_test/entity_schema_test.module
Implements hook_entity_bundle_field_info().
entity_test_extra_entity_bundle_field_info in core/modules/system/tests/modules/entity_test_extra/entity_test_extra.module
Implements hook_entity_bundle_field_info().

File

core/lib/Drupal/Core/Entity/entity.api.php, line 2009

Code

function hook_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
    // Add a property only to nodes of the 'article' bundle.
    if ($entity_type->id() == 'node' && $bundle == 'article') {
        $fields = [];
        $storage_definitions = my_module_entity_field_storage_info($entity_type);
        $fields['my_module_bundle_field'] = FieldDefinition::createFromFieldStorageDefinition($storage_definitions['my_module_bundle_field'])->setLabel(t('Bundle Field'));
        return $fields;
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.