public FieldDefinitionListener::onFieldDefinitionDelete(FieldDefinitionInterface $field_definition)
Reacts to the deletion of a field.
Stored values should not be wiped at once, but marked as 'deleted' so that they can go through a proper purge process later on.
Parameters
\Drupal\Core\Field\FieldDefinitionInterface $field_definition: The field definition being deleted.
Overrides FieldDefinitionListenerInterface::onFieldDefinitionDelete
File
- core/lib/Drupal/Core/Field/FieldDefinitionListener.php, line 116
Class
- FieldDefinitionListener
- Reacts to field definition CRUD on behalf of the Entity system.
Namespace
Drupal\Core\Field
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public function onFieldDefinitionDelete(FieldDefinitionInterface $field_definition ) { $entity_type_id = $field_definition ->getTargetEntityTypeId(); $bundle = $field_definition ->getTargetBundle(); $field_name = $field_definition ->getName(); // Notify the storage about the field deletion. $this ->entityTypeManager->getStorage( $entity_type_id )->onFieldDefinitionDelete( $field_definition ); // Unset the bundle from the bundle field map key value collection. $bundle_field_map = $this ->keyValueFactory->get( 'entity.definitions.bundle_field_map' )->get( $entity_type_id ); unset( $bundle_field_map [ $field_name ][ 'bundles' ][ $bundle ]); if ( empty ( $bundle_field_map [ $field_name ][ 'bundles' ])) { // If there are no bundles left, remove the field from the map. unset( $bundle_field_map [ $field_name ]); } $this ->keyValueFactory->get( 'entity.definitions.bundle_field_map' )->set( $entity_type_id , $bundle_field_map ); // Delete the cache entry. $this ->cacheBackend-> delete ( 'entity_field_map' ); // If the field map is initialized, update it as well, so that calls to it // do not have to rebuild it again. if ( $field_map = $this ->entityFieldManager->getFieldMap()) { unset( $field_map [ $entity_type_id ][ $field_name ][ 'bundles' ][ $bundle ]); if ( empty ( $field_map [ $entity_type_id ][ $field_name ][ 'bundles' ])) { unset( $field_map [ $entity_type_id ][ $field_name ]); } $this ->entityFieldManager->setFieldMap( $field_map ); } } |
Please login to continue.