class DataReferenceDefinition
Same name and namespace in other branches
- 11.x core/lib/Drupal/Core/TypedData/DataReferenceDefinition.php \Drupal\Core\TypedData\DataReferenceDefinition
- 10 core/lib/Drupal/Core/TypedData/DataReferenceDefinition.php \Drupal\Core\TypedData\DataReferenceDefinition
- 9 core/lib/Drupal/Core/TypedData/DataReferenceDefinition.php \Drupal\Core\TypedData\DataReferenceDefinition
- 8.9.x core/lib/Drupal/Core/TypedData/DataReferenceDefinition.php \Drupal\Core\TypedData\DataReferenceDefinition
A typed data definition class for defining references.
Note that this definition class assumes that the data type for referencing a certain target type is named "{TARGET_TYPE}_reference".
Hierarchy
- class \Drupal\Core\TypedData\DataDefinition implements \Drupal\Core\TypedData\DataDefinitionInterface, \Drupal\Core\TypedData\ArrayAccess uses \Drupal\Core\TypedData\TypedDataTrait
- class \Drupal\Core\TypedData\DataReferenceDefinition implements \Drupal\Core\TypedData\DataReferenceDefinitionInterface extends \Drupal\Core\TypedData\DataDefinition
Expanded class hierarchy of DataReferenceDefinition
See also
\Drupal\Core\TypedData\DataReferenceBase
7 files declare their use of DataReferenceDefinition
- EntityReference.php in core/
lib/ Drupal/ Core/ Entity/ Plugin/ DataType/ EntityReference.php - EntityReferenceItem.php in core/
lib/ Drupal/ Core/ Field/ Plugin/ Field/ FieldType/ EntityReferenceItem.php - EntityReferenceUuidItem.php in core/
modules/ jsonapi/ tests/ modules/ jsonapi_test_field_type/ src/ Plugin/ Field/ FieldType/ EntityReferenceUuidItem.php - EntityTypedDataDefinitionTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Entity/ EntityTypedDataDefinitionTest.php - LanguageItem.php in core/
lib/ Drupal/ Core/ Field/ Plugin/ Field/ FieldType/ LanguageItem.php
File
-
core/
lib/ Drupal/ Core/ TypedData/ DataReferenceDefinition.php, line 13
Namespace
Drupal\Core\TypedDataView source
class DataReferenceDefinition extends DataDefinition implements DataReferenceDefinitionInterface {
/**
* @var \Drupal\Core\TypedData\DataDefinitionInterface
*/
protected $targetDefinition;
/**
* Creates a new data reference definition.
*
* @param string $target_data_type
* The data type of the referenced data.
*
* @return static
*/
public static function create($target_data_type) {
// This assumes implementations use a "TYPE_reference" naming pattern.
$definition = parent::create($target_data_type . '_reference');
return $definition->setTargetDefinition(\Drupal::typedDataManager()->createDataDefinition($target_data_type));
}
/**
* {@inheritdoc}
*/
public static function createFromDataType($data_type) {
if (!str_ends_with($data_type, '_reference')) {
throw new \InvalidArgumentException('Data type must be of the form "{TARGET_TYPE}_reference"');
}
// Cut of the _reference suffix.
return static::create(substr($data_type, 0, strlen($data_type) - strlen('_reference')));
}
/**
* {@inheritdoc}
*/
public function getTargetDefinition() {
return $this->targetDefinition;
}
/**
* Sets the definition of the referenced data.
*
* @param \Drupal\Core\TypedData\DataDefinitionInterface $definition
* The target definition to set.
*
* @return $this
*/
public function setTargetDefinition(DataDefinitionInterface $definition) {
$this->targetDefinition = $definition;
return $this;
}
}
Members
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.