/** * {@inheritdoc} */ public function cloneEntity(EntityInterface $field_config, EntityInterface $cloned_field_config, $properties = []) { /** @var \Drupal\field\Entity\FieldConfig $field_config */ /** @var \Drupal\field\Entity\FieldConfig $cloned_field_config */ /** @var \Drupal\field\Entity\FieldStorageConfig $cloned_field_storage */ if ((!isset($properties['skip_storage']) || !$properties['skip_storage'])) { $cloned_field_storage = $field_config->getFieldStorageDefinition()->createDuplicate(); $cloned_field_storage->set('field_name', $properties['id']); $cloned_field_storage->set('id', $properties['id'] . '.' . $cloned_field_storage->getTargetEntityTypeId()); $cloned_field_storage->save(); } unset($properties['skip_storage']); $properties['field_name'] = $properties['id']; $properties['id'] = $cloned_field_config->getTargetEntityTypeId() . '.' . $cloned_field_config->getTargetBundle() . '.' . $properties['id']; return parent::cloneEntity($field_config, $cloned_field_config, $properties); }
/** * {@inheritdoc} */ public function cloneEntity(EntityInterface $entity, EntityInterface $cloned_entity, $properties = []) { $cloned_entity = parent::cloneEntity($entity, $cloned_entity, $properties); $bundle_of = $cloned_entity->getEntityType()->getBundleOf(); if ($bundle_of) { $this->cloneFields($entity->id(), $cloned_entity->id(), $bundle_of); } $view_displays = \Drupal::service('entity_display.repository')->getViewModes($bundle_of); $view_displays = array_merge($view_displays, ['default' => 'default']); if (!empty($view_displays)) { $this->cloneDisplays('view', $entity->id(), $cloned_entity->id(), $view_displays, $bundle_of); } $view_displays = \Drupal::service('entity_display.repository')->getFormModes($bundle_of); $view_displays = array_merge($view_displays, ['default' => 'default']); if (!empty($view_displays)) { $this->cloneDisplays('form', $entity->id(), $cloned_entity->id(), $view_displays, $bundle_of); } return $cloned_entity; }