class FieldItemDataDefinition

Same name in other branches
  1. 9 core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php \Drupal\Core\Field\TypedData\FieldItemDataDefinition
  2. 8.9.x core/lib/Drupal/Core/Field/TypedData/FieldItemDataDefinition.php \Drupal\Core\Field\TypedData\FieldItemDataDefinition
  3. 11.x 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

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
DataDefinition::$definition protected property The array holding values for all definition keys.
DataDefinition::addConstraint public function Overrides DataDefinitionInterface::addConstraint
DataDefinition::getClass public function Overrides DataDefinitionInterface::getClass 1
DataDefinition::getConstraint public function Overrides DataDefinitionInterface::getConstraint
DataDefinition::getConstraints public function Overrides DataDefinitionInterface::getConstraints 1
DataDefinition::getDataType public function Overrides DataDefinitionInterface::getDataType 2
DataDefinition::getDescription public function Overrides DataDefinitionInterface::getDescription
DataDefinition::getSetting public function Overrides DataDefinitionInterface::getSetting 2
DataDefinition::getSettings public function Overrides DataDefinitionInterface::getSettings 2
DataDefinition::isComputed public function Overrides DataDefinitionInterface::isComputed
DataDefinition::isInternal public function Overrides DataDefinitionInterface::isInternal 1
DataDefinition::isList public function Overrides DataDefinitionInterface::isList
DataDefinition::isReadOnly public function Overrides DataDefinitionInterface::isReadOnly
DataDefinition::isRequired public function Overrides DataDefinitionInterface::isRequired
DataDefinition::offsetExists public function This is for BC support only.
@todo Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetGet public function This is for BC support only.
@todo Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetSet public function This is for BC support only.
@todo Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetUnset public function This is for BC support only.
@todo Remove in https://www.drupal.org/node/1928868.
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 Overrides DataDefinition::createFromDataType
FieldItemDataDefinition::getFieldDefinition public function Overrides FieldItemDataDefinitionInterface::getFieldDefinition
FieldItemDataDefinition::getLabel public function Gets the label of the field type. Overrides DataDefinition::getLabel
FieldItemDataDefinition::getMainPropertyName public function Overrides ComplexDataDefinitionInterface::getMainPropertyName
FieldItemDataDefinition::getPropertyDefinition public function Overrides ComplexDataDefinitionInterface::getPropertyDefinition
FieldItemDataDefinition::getPropertyDefinitions public function Overrides ComplexDataDefinitionInterface::getPropertyDefinitions
FieldItemDataDefinition::setFieldDefinition public function 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. 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.