public function BaseFieldOverride::preSave
public BaseFieldOverride::preSave(EntityStorageInterface $storage)
Throws
\Drupal\Core\Field\FieldException If the bundle is being changed.
Overrides ConfigEntityBase::preSave
File
- core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php, line 163
Class
- BaseFieldOverride
- Defines the base field override entity.
Namespace
Drupal\Core\Field\EntityCode
public function preSave(EntityStorageInterface $storage) { // 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. $field_type_manager = \Drupal::service('plugin.manager.field.field_type'); $default_settings = $field_type_manager->getDefaultFieldSettings($this->getType()); $this->settings = array_intersect_key($this->settings, $default_settings) + $default_settings; // Call the parent's presave method to perform validate and calculate // dependencies. parent::preSave($storage); if ($this->isNew()) { // @todo This assumes that the previous definition isn't some // non-config-based override, but that might not be the case: // https://www.drupal.org/node/2321071. $previous_definition = $this->getBaseFieldDefinition(); } else { // Some updates are always disallowed. if ($this->entity_type != $this->original->entity_type) { throw new FieldException("Cannot change the entity_type of an existing base field bundle override (entity type:{$this->entity_type}, bundle:{$this->original->bundle}, field name: {$this->field_name})"); } if ($this->bundle != $this->original->bundle) { throw new FieldException("Cannot change the bundle of an existing base field bundle override (entity type:{$this->entity_type}, bundle:{$this->original->bundle}, field name: {$this->field_name})"); } $previous_definition = $this->original; } // Notify the entity storage. $this->entityManager()->getStorage($this->getTargetEntityTypeId())->onFieldDefinitionUpdate($this, $previous_definition); }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Field!Entity!BaseFieldOverride.php/function/BaseFieldOverride::preSave/8.1.x