public FieldConfig::preSave(EntityStorageInterface $storage)
Overrides \Drupal\Core\Entity\Entity::preSave().
Throws
\Drupal\Core\Field\FieldException If the field definition is invalid.
\Drupal\Core\Entity\EntityStorageException In case of failures at the configuration storage level.
Overrides ConfigEntityBase::preSave
File
- core/modules/field/src/Entity/FieldConfig.php, line 143
Class
- FieldConfig
- Defines the Field entity.
Namespace
Drupal\field\Entity
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 31 32 33 | public function preSave(EntityStorageInterface $storage ) { $entity_manager = \Drupal::entityManager(); $field_type_manager = \Drupal::service( 'plugin.manager.field.field_type' ); $storage_definition = $this ->getFieldStorageDefinition(); // Filter out unknown settings and make sure all settings are present, so // that a complete field definition is passed to the various hooks and // written to config. $default_settings = $field_type_manager ->getDefaultFieldSettings( $storage_definition -> getType ()); $this ->settings = array_intersect_key ( $this ->settings, $default_settings ) + $default_settings ; if ( $this ->isNew()) { // Notify the entity storage. $entity_manager ->onFieldDefinitionCreate( $this ); } else { // Some updates are always disallowed. if ( $this ->entity_type != $this ->original->entity_type) { throw new FieldException( "Cannot change an existing field's entity_type." ); } if ( $this ->bundle != $this ->original->bundle) { throw new FieldException( "Cannot change an existing field's bundle." ); } if ( $storage_definition ->uuid() != $this ->original->getFieldStorageDefinition()->uuid()) { throw new FieldException( "Cannot change an existing field's storage." ); } // Notify the entity storage. $entity_manager ->onFieldDefinitionUpdate( $this , $this ->original); } parent::preSave( $storage ); } |
Please login to continue.