class EntityAdapter
Same name in other branches
- 9 core/lib/Drupal/Core/Entity/Plugin/DataType/EntityAdapter.php \Drupal\Core\Entity\Plugin\DataType\EntityAdapter
- 10 core/lib/Drupal/Core/Entity/Plugin/DataType/EntityAdapter.php \Drupal\Core\Entity\Plugin\DataType\EntityAdapter
- 11.x core/lib/Drupal/Core/Entity/Plugin/DataType/EntityAdapter.php \Drupal\Core\Entity\Plugin\DataType\EntityAdapter
Defines the "entity" data type.
Instances of this class wrap entity objects and allow to deal with entities based upon the Typed Data API.
In addition to the "entity" data type, this exposes derived "entity:$entity_type" and "entity:$entity_type:$bundle" data types.
Plugin annotation
@DataType(
id = "entity",
label = @Translation("Entity"),
description = @Translation("All kind of entities, e.g. nodes, comments or users."),
deriver = "\Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver",
definition_class = "\Drupal\Core\Entity\TypedData\EntityDataDefinition"
)
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements \Drupal\Core\TypedData\TypedDataInterface, \Drupal\Component\Plugin\PluginInspectionInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\TypedData\TypedDataTrait
- class \Drupal\Core\Entity\Plugin\DataType\EntityAdapter extends \Drupal\Core\TypedData\TypedData implements \Drupal\Core\Entity\Plugin\DataType\IteratorAggregate, \Drupal\Core\TypedData\ComplexDataInterface
Expanded class hierarchy of EntityAdapter
6 files declare their use of EntityAdapter
- EntityAdapterUnitTest.php in core/
tests/ Drupal/ Tests/ Core/ Entity/ TypedData/ EntityAdapterUnitTest.php - EntityContextDefinition.php in core/
lib/ Drupal/ Core/ Plugin/ Context/ EntityContextDefinition.php - EntityDeriver.php in core/
lib/ Drupal/ Core/ Entity/ Plugin/ DataType/ Deriver/ EntityDeriver.php - RecursiveContextualValidator.php in core/
lib/ Drupal/ Core/ TypedData/ Validation/ RecursiveContextualValidator.php - RecursiveContextualValidatorTest.php in core/
tests/ Drupal/ KernelTests/ Core/ TypedData/ RecursiveContextualValidatorTest.php
File
-
core/
lib/ Drupal/ Core/ Entity/ Plugin/ DataType/ EntityAdapter.php, line 29
Namespace
Drupal\Core\Entity\Plugin\DataTypeView source
class EntityAdapter extends TypedData implements \IteratorAggregate, ComplexDataInterface {
/**
* The wrapped entity object.
*
* @var \Drupal\Core\Entity\EntityInterface|null
*/
protected $entity;
/**
* Creates an instance wrapping the given entity.
*
* @param \Drupal\Core\Entity\EntityInterface|null $entity
* The entity object to wrap.
*
* @return static
*/
public static function createFromEntity(EntityInterface $entity) {
$definition = EntityDataDefinition::create()->setEntityTypeId($entity->getEntityTypeId())
->setBundles([
$entity->bundle(),
]);
$instance = new static($definition);
$instance->setValue($entity);
return $instance;
}
/**
* {@inheritdoc}
*/
public function getValue() {
return $this->entity;
}
/**
* {@inheritdoc}
*/
public function setValue($entity, $notify = TRUE) {
$this->entity = $entity;
// Notify the parent of any changes.
if ($notify && isset($this->parent)) {
$this->parent
->onChange($this->name);
}
}
/**
* {@inheritdoc}
*/
public function get($property_name) {
if (!isset($this->entity)) {
throw new MissingDataException("Unable to get property {$property_name} as no entity has been provided.");
}
if (!$this->entity instanceof FieldableEntityInterface) {
throw new \InvalidArgumentException("Unable to get unknown property {$property_name}.");
}
// This will throw an exception for unknown fields.
return $this->entity
->get($property_name);
}
/**
* {@inheritdoc}
*/
public function set($property_name, $value, $notify = TRUE) {
if (!isset($this->entity)) {
throw new MissingDataException("Unable to set property {$property_name} as no entity has been provided.");
}
if (!$this->entity instanceof FieldableEntityInterface) {
throw new \InvalidArgumentException("Unable to set unknown property {$property_name}.");
}
// This will throw an exception for unknown fields.
$this->entity
->set($property_name, $value, $notify);
return $this;
}
/**
* {@inheritdoc}
*/
public function getProperties($include_computed = FALSE) {
if (!isset($this->entity)) {
throw new MissingDataException('Unable to get properties as no entity has been provided.');
}
if (!$this->entity instanceof FieldableEntityInterface) {
return [];
}
return $this->entity
->getFields($include_computed);
}
/**
* {@inheritdoc}
*/
public function toArray() {
if (!isset($this->entity)) {
throw new MissingDataException('Unable to get property values as no entity has been provided.');
}
return $this->entity
->toArray();
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
return !isset($this->entity);
}
/**
* {@inheritdoc}
*/
public function onChange($property_name) {
if (isset($this->entity) && $this->entity instanceof FieldableEntityInterface) {
// Let the entity know of any changes.
$this->entity
->onChange($property_name);
}
}
/**
* {@inheritdoc}
*/
public function getString() {
return isset($this->entity) ? $this->entity
->label() : '';
}
/**
* {@inheritdoc}
*/
public function applyDefaultValue($notify = TRUE) {
// Apply the default value of all properties.
foreach ($this->getProperties() as $property) {
$property->applyDefaultValue(FALSE);
}
return $this;
}
/**
* {@inheritdoc}
*/
public function getIterator() {
return $this->entity instanceof \IteratorAggregate ? $this->entity
->getIterator() : new \ArrayIterator([]);
}
/**
* Returns the wrapped entity object.
*
* @return \Drupal\Core\Entity\EntityInterface
* The wrapped entity object. If the entity is translatable and a specific
* translation is required, always request it by calling ::getTranslation()
* or ::getUntranslated() as the language of the returned object is not
* defined.
*/
public function getEntity() {
return $this->entity;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DependencySerializationTrait::$_entityStorages | protected | property | An array of entity type IDs keyed by the property name of their storages. | ||
DependencySerializationTrait::$_serviceIds | protected | property | An array of service IDs keyed by property name used for serialization. | ||
DependencySerializationTrait::__sleep | public | function | 1 | ||
DependencySerializationTrait::__wakeup | public | function | 2 | ||
EntityAdapter::$entity | protected | property | The wrapped entity object. | 1 | |
EntityAdapter::applyDefaultValue | public | function | Applies the default value. | Overrides TypedData::applyDefaultValue | 1 |
EntityAdapter::createFromEntity | public static | function | Creates an instance wrapping the given entity. | ||
EntityAdapter::get | public | function | Gets a property object. | Overrides ComplexDataInterface::get | 1 |
EntityAdapter::getEntity | public | function | Returns the wrapped entity object. | ||
EntityAdapter::getIterator | public | function | 1 | ||
EntityAdapter::getProperties | public | function | Gets an array of property objects. | Overrides ComplexDataInterface::getProperties | 1 |
EntityAdapter::getString | public | function | Returns a string representation of the data. | Overrides TypedData::getString | |
EntityAdapter::getValue | public | function | Gets the data value. | Overrides TypedData::getValue | |
EntityAdapter::isEmpty | public | function | Determines whether the data structure is empty. | Overrides ComplexDataInterface::isEmpty | |
EntityAdapter::onChange | public | function | React to changes to a child property or item. | Overrides TraversableTypedDataInterface::onChange | 1 |
EntityAdapter::set | public | function | Sets a property value. | Overrides ComplexDataInterface::set | 1 |
EntityAdapter::setValue | public | function | Sets the data value. | Overrides TypedData::setValue | |
EntityAdapter::toArray | public | function | Returns an array of all property values. | Overrides ComplexDataInterface::toArray | |
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | ||
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | ||
TypedData::$definition | protected | property | The data definition. | 1 | |
TypedData::$name | protected | property | The property name. | ||
TypedData::$parent | protected | property | The parent typed data object. | ||
TypedData::createInstance | public static | function | Constructs a TypedData object given its definition and context. | Overrides TypedDataInterface::createInstance | |
TypedData::getConstraints | public | function | Gets a list of validation constraints. | Overrides TypedDataInterface::getConstraints | 9 |
TypedData::getDataDefinition | public | function | Gets the data definition. | Overrides TypedDataInterface::getDataDefinition | |
TypedData::getName | public | function | Returns the name of a property or item. | Overrides TypedDataInterface::getName | |
TypedData::getParent | public | function | Returns the parent data structure; i.e. either complex data or a list. | Overrides TypedDataInterface::getParent | |
TypedData::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | Overrides PluginInspectionInterface::getPluginDefinition | |
TypedData::getPluginId | public | function | Gets the plugin_id of the plugin instance. | Overrides PluginInspectionInterface::getPluginId | |
TypedData::getPropertyPath | public | function | Returns the property path of the data. | Overrides TypedDataInterface::getPropertyPath | |
TypedData::getRoot | public | function | Returns the root of the typed data tree. | Overrides TypedDataInterface::getRoot | |
TypedData::setContext | public | function | Sets the context of a property or item via a context aware parent. | Overrides TypedDataInterface::setContext | |
TypedData::validate | public | function | Validates the currently set data value. | Overrides TypedDataInterface::validate | |
TypedData::__construct | public | function | Constructs a TypedData object given its definition and context. | 3 | |
TypedDataTrait::$typedDataManager | protected | property | The typed data manager used for creating the data types. | ||
TypedDataTrait::getTypedDataManager | public | function | Gets the typed data manager. | 2 | |
TypedDataTrait::setTypedDataManager | public | function | Sets the typed data manager. | 2 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.