protected ConfigEntityStorage::doSave($id, EntityInterface $entity)
Performs storage-specific saving of the entity.
Parameters
int|string $id: The original entity ID.
\Drupal\Core\Entity\EntityInterface $entity: The entity to save.
Return value
bool|int If the record insert or update failed, returns FALSE. If it succeeded, returns SAVED_NEW or SAVED_UPDATED, depending on the operation performed.
Overrides EntityStorageBase::doSave
File
- core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php, line 265
Class
- ConfigEntityStorage
- Defines the storage class for configuration entities.
Namespace
Drupal\Core\Config\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 | protected function doSave( $id , EntityInterface $entity ) { $is_new = $entity ->isNew(); $prefix = $this ->getPrefix(); $config_name = $prefix . $entity ->id(); if ( $id !== $entity ->id()) { // Renaming a config object needs to cater for: // - Storage needs to access the original object. // - The object needs to be renamed/copied in ConfigFactory and reloaded. // - All instances of the object need to be renamed. $this ->configFactory->rename( $prefix . $id , $config_name ); } $config = $this ->configFactory->getEditable( $config_name ); // Retrieve the desired properties and set them in config. $config ->setData( $this ->mapToStorageRecord( $entity )); $config ->save( $entity ->hasTrustedData()); // Update the entity with the values stored in configuration. It is possible // that configuration schema has casted some of the values. if (! $entity ->hasTrustedData()) { $data = $this ->mapFromStorageRecords( array ( $config ->get())); $updated_entity = current( $data ); foreach ( array_keys ( $config ->get()) as $property ) { $value = $updated_entity ->get( $property ); $entity ->set( $property , $value ); } } return $is_new ? SAVED_NEW : SAVED_UPDATED; } |
Please login to continue.