trait EntityDuplicateFormTrait in Entity API 8
Allows forms to implement EntityDuplicateFormInterface.
Forms are expected to call $this->postSave() after the entity is saved. This works around core issue #3040556.
Hierarchy
- trait \Drupal\entity\Form\EntityDuplicateFormTrait
1 file declares its use of EntityDuplicateFormTrait
- EnhancedEntityForm.php in tests/
modules/ entity_module_test/ src/ Form/ EnhancedEntityForm.php
File
- src/
Form/ EntityDuplicateFormTrait.php, line 15
Namespace
Drupal\entity\FormView source
trait EntityDuplicateFormTrait {
/**
* The source entity.
*
* @var \Drupal\Core\Entity\EntityInterface
*/
protected $sourceEntity;
/**
* {@inheritdoc}
*/
public function getSourceEntity() {
return $this->sourceEntity;
}
/**
* {@inheritdoc}
*/
public function setSourceEntity(EntityInterface $source_entity) {
$this->sourceEntity = $source_entity;
return $this;
}
/**
* Invokes entity duplicate hooks after the entity has been duplicated.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The saved entity.
* @param string $operation
* The form operation.
*/
protected function postSave(EntityInterface $entity, $operation) {
if ($operation == 'duplicate') {
// An event is used instead of a hook to prevent a conflict with core
// once hook_entity_duplicate() is introduced there.
$event = new EntityDuplicateEvent($entity, $this->sourceEntity);
/** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher */
$event_dispatcher = \Drupal::service('event_dispatcher');
$event_dispatcher
->dispatch(EntityEvents::ENTITY_DUPLICATE, $event);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
EntityDuplicateFormTrait:: |
protected | property | The source entity. | |
EntityDuplicateFormTrait:: |
public | function | ||
EntityDuplicateFormTrait:: |
protected | function | Invokes entity duplicate hooks after the entity has been duplicated. | |
EntityDuplicateFormTrait:: |
public | function |