Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php \Drupal\Core\Field\TypedData\FieldItemDataDefinition
  2. 9 core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php \Drupal\Core\Field\TypedData\FieldItemDataDefinition

A typed data definition class for defining field items.

This class is just a small wrapper around field definitions to expose metadata about field item's via the Typed Data API. As the work is done by the field definitions, this class does not benefit and thus does not extend from MapDefinition or ComplexDataDefinitionBase.

Hierarchy

Expanded class hierarchy of FieldItemDataDefinition

7 files declare their use of FieldItemDataDefinition
BaseFieldDefinition.php in core/lib/Drupal/Core/Field/BaseFieldDefinition.php
EntityReferenceFieldItemNormalizerTest.php in core/modules/serialization/tests/src/Unit/Normalizer/EntityReferenceFieldItemNormalizerTest.php
FieldConfigBase.php in core/lib/Drupal/Core/Field/FieldConfigBase.php
FieldDefinition.php in core/lib/Drupal/Core/Field/FieldDefinition.php
FileUploadForm.php in core/modules/media_library/src/Form/FileUploadForm.php

... See full list

File

core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php, line 16

Namespace

Drupal\Core\Field\TypedData
View source
class FieldItemDataDefinition extends DataDefinition implements FieldItemDataDefinitionInterface {

  /**
   * The field definition the item definition belongs to.
   *
   * @var \Drupal\Core\Field\FieldDefinitionInterface
   */
  protected $fieldDefinition;

  /**
   * {@inheritdoc}
   */
  public static function createFromDataType($data_type) {

    // The data type of a field item is in the form of "field_item:$field_type".
    $parts = explode(':', $data_type, 2);
    if ($parts[0] != 'field_item') {
      throw new \InvalidArgumentException('Data type must be in the form of "field_item:FIELD_TYPE".');
    }
    $field_definition = BaseFieldDefinition::create($parts[1]);
    return $field_definition
      ->getItemDefinition();
  }

  /**
   * Creates a new field item definition.
   *
   * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
   *   The field definition the item definition belongs to.
   *
   * @return static
   */
  public static function create($field_definition) {
    $definition['type'] = 'field_item:' . $field_definition
      ->getType();
    $item_definition = new static($definition);
    $item_definition->fieldDefinition = $field_definition;
    return $item_definition;
  }

  /**
   * {@inheritdoc}
   */
  public function getPropertyDefinition($name) {
    return $this->fieldDefinition
      ->getFieldStorageDefinition()
      ->getPropertyDefinition($name);
  }

  /**
   * {@inheritdoc}
   */
  public function getPropertyDefinitions() {
    return $this->fieldDefinition
      ->getFieldStorageDefinition()
      ->getPropertyDefinitions();
  }

  /**
   * {@inheritdoc}
   */
  public function getMainPropertyName() {
    return $this->fieldDefinition
      ->getFieldStorageDefinition()
      ->getMainPropertyName();
  }

  /**
   * {@inheritdoc}
   */
  public function getFieldDefinition() {
    return $this->fieldDefinition;
  }

  /**
   * {@inheritdoc}
   */
  public function setFieldDefinition($field_definition) {
    $this->fieldDefinition = $field_definition;
    return $this;
  }

  /**
   * Gets the label of the field type.
   *
   * If the label hasn't been set, then fall back to the label of the
   * typed data definition.
   *
   * @return string
   *   The label of the field type.
   *
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  public function getLabel() {
    return parent::getLabel() ?: $this
      ->getTypedDataManager()
      ->getDefinition($this
      ->getDataType())['label'];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DataDefinition::$definition protected property The array holding values for all definition keys.
DataDefinition::addConstraint public function Adds a validation constraint. Overrides DataDefinitionInterface::addConstraint
DataDefinition::getClass public function Returns the class used for creating the typed data object. Overrides DataDefinitionInterface::getClass 1
DataDefinition::getConstraint public function Returns a validation constraint. Overrides DataDefinitionInterface::getConstraint
DataDefinition::getConstraints public function Returns an array of validation constraints. Overrides DataDefinitionInterface::getConstraints 1
DataDefinition::getDataType public function Returns the data type of the data. Overrides DataDefinitionInterface::getDataType 2
DataDefinition::getDescription public function Returns a human readable description. Overrides DataDefinitionInterface::getDescription
DataDefinition::getSetting public function Returns the value of a given setting. Overrides DataDefinitionInterface::getSetting 2
DataDefinition::getSettings public function Returns the array of settings, as required by the used class. Overrides DataDefinitionInterface::getSettings 2
DataDefinition::isComputed public function Determines whether the data value is computed. Overrides DataDefinitionInterface::isComputed
DataDefinition::isInternal public function Determines whether the data value is internal. Overrides DataDefinitionInterface::isInternal 1
DataDefinition::isList public function Returns whether the data is multi-valued, i.e. a list of data items. Overrides DataDefinitionInterface::isList
DataDefinition::isReadOnly public function Determines whether the data is read-only. Overrides DataDefinitionInterface::isReadOnly
DataDefinition::isRequired public function Determines whether a data value is required. Overrides DataDefinitionInterface::isRequired
DataDefinition::offsetExists public function
DataDefinition::offsetGet public function
DataDefinition::offsetSet public function
DataDefinition::offsetUnset public function
DataDefinition::setClass public function Sets the class used for creating the typed data object.
DataDefinition::setComputed public function Sets whether the data is computed.
DataDefinition::setConstraints public function Sets an array of validation constraints.
DataDefinition::setDataType public function Sets the data type. 1
DataDefinition::setDescription public function Sets the human-readable description.
DataDefinition::setInternal public function Sets the whether the data value should be internal.
DataDefinition::setLabel public function Sets the human-readable label.
DataDefinition::setReadOnly public function Sets whether the data is read-only.
DataDefinition::setRequired public function Sets whether the data is required.
DataDefinition::setSetting public function Sets a definition setting. 2
DataDefinition::setSettings public function Sets the array of settings, as required by the used class. 2
DataDefinition::toArray public function Returns all definition values as array.
DataDefinition::__construct public function Constructs a new data definition object. 1
DataDefinition::__sleep public function 2
FieldItemDataDefinition::$fieldDefinition protected property The field definition the item definition belongs to.
FieldItemDataDefinition::create public static function Creates a new field item definition. Overrides DataDefinition::create
FieldItemDataDefinition::createFromDataType public static function Creates a new data definition object. Overrides DataDefinition::createFromDataType
FieldItemDataDefinition::getFieldDefinition public function Gets the field item's field definition. Overrides FieldItemDataDefinitionInterface::getFieldDefinition
FieldItemDataDefinition::getLabel public function Gets the label of the field type. Overrides DataDefinition::getLabel
FieldItemDataDefinition::getMainPropertyName public function Returns the name of the main property, if any. Overrides ComplexDataDefinitionInterface::getMainPropertyName
FieldItemDataDefinition::getPropertyDefinition public function Gets the definition of a contained property. Overrides ComplexDataDefinitionInterface::getPropertyDefinition
FieldItemDataDefinition::getPropertyDefinitions public function Gets an array of property definitions of contained properties. Overrides ComplexDataDefinitionInterface::getPropertyDefinitions
FieldItemDataDefinition::setFieldDefinition public function Sets the field item's field definition. Overrides FieldItemDataDefinitionInterface::setFieldDefinition
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 1
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 1