BaseFieldDefinition
class BaseFieldDefinition extends ListDataDefinition implements FieldDefinitionInterface, FieldStorageDefinitionInterface, RequiredFieldStorageDefinitionInterface (View source)
A class for defining entity fields.
Traits
Trait to implement CacheableDependencyInterface for unchanging objects.
A trait used to assist in the normalization of raw input field values.
Wrapper methods for classes that needs typed data manager object.
Properties
| protected TypedDataManagerInterface | $typedDataManager | The typed data manager used for creating the data types. |
from TypedDataTrait |
| protected array | $definition | The array holding values for all definition keys. |
from DataDefinition |
| protected DataDefinitionInterface | $itemDefinition | The data definition of a list item. |
from ListDataDefinition |
| protected string | $type | The field type. |
|
| protected DataDefinitionInterface[] | $propertyDefinitions | An array of field property definitions. |
|
| protected array | $schema | The field schema. |
|
| protected array | $indexes |
Methods
Creates a new field definition.
Creates a new data definition object.
Constructs a new data definition object.
Sets the human-readable description.
Returns whether the data is multi-valued, i.e. a list of data items.
Returns the class used for creating the typed data object.
Sets the class used for creating the typed data object.
Returns the array of settings, as required by the used class.
Sets the array of settings, as required by the used class.
Returns the value of a given setting.
Sets a definition setting.
Sets an array of validation constraints.
Adds a validation constraint.
{@inheritdoc}
Determines whether the data value is internal.
Sets the whether the data value should be internal.
Creates a new list data definition for items of the given data type.
Gets the data definition of an item of the list.
Magic method: Implements a deep clone.
Ensure a field value is transformed into a format keyed by delta.
Creates a new field definition based upon a field storage definition.
Returns the machine name of the field.
Sets the field name.
Returns the field type.
Returns the name of the provider of this field.
Sets the name of the provider of this field.
Returns whether the field is translatable.
Sets whether the field is translatable.
Returns whether the field storage is revisionable.
Sets whether the field is revisionable.
Returns the maximum number of items allowed for the field.
Sets the maximum number of items allowed for the field.
Returns whether the field can contain multiple items.
Determines whether the field is queryable via QueryInterface.
Sets constraints for a given field item property.
Adds constraints for a given field item property.
Sets the display options for the field in forms or rendered entities.
Sets whether the display for the field can be configured.
Returns the default display options for the field.
Returns whether the display for the field can be configured.
Returns the default value literal for the field.
Returns the default value callback for the field.
Returns the default value for the field in a newly created entity.
{@inheritdoc}
{@inheritdoc}
Returns the initial value for the field.
Sets an initial value for the field.
Returns the name of the field that will be used for getting initial values.
Sets a field that will be used for getting initial values.
Gets an options provider for the given field item property.
Gets the definition of a contained property.
Gets an array of property definitions of contained properties.
Returns the names of the field's subproperties.
Returns the name of the main property, if any.
Returns the ID of the entity type the field is attached to.
Sets the ID of the type of the entity this field is attached to.
Gets the bundle the field is attached to.
Sets the bundle this field is defined for.
Returns the field schema.
Returns the field columns, as defined in the field schema.
Returns the storage behavior for this field.
Determines whether the field is a base field.
Sets the storage behavior for this field.
Returns the field storage definition.
Returns a unique identifier for the field storage.
Returns a unique identifier for the field.
Returns whether the field is deleted or not.
Sets whether the field storage is deleted.
Gets an object that can be saved in configuration.
Returns whether the field storage is required.
Sets whether the field storage is required.
Details
$this
setTypedDataManager(TypedDataManagerInterface $typed_data_manager)
Sets the typed data manager.
TypedDataManagerInterface
getTypedDataManager()
Gets the typed data manager.
static DataDefinition
create(string $type)
Creates a new field definition.
static DataDefinitionInterface
createFromDataType($type)
Creates a new data definition object.
This method is typically used by \Drupal\Core\TypedData\TypedDataManager::createDataDefinition() to build a definition object for an arbitrary data type. When the definition class is known, it is recommended to directly use the static create() method on that class instead; e.g.:
__construct(array $values = [], DataDefinitionInterface $item_definition = NULL)
Constructs a new data definition object.
string
getDataType()
Returns the data type of the data.
DataDefinition
setDataType(string $type)
Sets the data type.
string|TranslatableMarkup
getLabel()
Returns a human readable label.
DataDefinition
setLabel(string $label)
Sets the human-readable label.
string|null
getDescription()
Returns a human readable description.
Descriptions are usually used on user interfaces where the data is edited or displayed.
DataDefinition
setDescription(string $description)
Sets the human-readable description.
bool
isList()
Returns whether the data is multi-valued, i.e. a list of data items.
This is equivalent to checking whether the data definition implements the \Drupal\Core\TypedData\ListDefinitionInterface interface.
bool
isReadOnly()
Determines whether the data is read-only.
DataDefinition
setReadOnly(bool $read_only)
Sets whether the data is read-only.
bool
isComputed()
Determines whether the data value is computed.
For example, data could be computed depending on some other values.
DataDefinition
setComputed(bool $computed)
Sets whether the data is computed.
bool
isRequired()
Determines whether a data value is required.
For required data a non-NULL value is mandatory.
DataDefinition
setRequired(bool $required)
Sets whether the data is required.
string
getClass()
Returns the class used for creating the typed data object.
If not specified, the default class of the data type will be returned.
DataDefinition
setClass(string|null $class)
Sets the class used for creating the typed data object.
array
getSettings()
Returns the array of settings, as required by the used class.
See the documentation of the class for supported or required settings.
DataDefinition
setSettings(array $settings)
Sets the array of settings, as required by the used class.
mixed
getSetting(string $setting_name)
Returns the value of a given setting.
DataDefinition
setSetting(string $setting_name, mixed $value)
Sets a definition setting.
array[]
getConstraints()
Returns an array of validation constraints.
The validation constraints of a definition consist of any for it defined constraints and default constraints, which are generated based on the definition and its data type. See \Drupal\Core\TypedData\TypedDataManager::getDefaultConstraints().
Constraints are defined via an array, having constraint plugin IDs as key and constraint options as values, e.g.
array
getConstraint(string $constraint_name)
Returns a validation constraint.
See \Drupal\Core\TypedData\DataDefinitionInterface::getConstraints() for details.
$this
setConstraints(array $constraints)
Sets an array of validation constraints.
DataDefinitionInterface
addConstraint(string $constraint_name, array|null $options = NULL)
Adds a validation constraint.
See \Drupal\Core\TypedData\DataDefinitionInterface::getConstraints() for details.
offsetExists($offset)
{@inheritdoc}
This is for BC support only.
offsetGet($offset)
{@inheritdoc}
This is for BC support only.
offsetSet($offset, $value)
{@inheritdoc}
This is for BC support only.
offsetUnset($offset)
{@inheritdoc}
This is for BC support only.
array
toArray()
Returns all definition values as array.
__sleep()
{@inheritdoc}
bool
isInternal()
Determines whether the data value is internal.
This can be used in a scenario when it is not desirable to expose this data value to an external system.
$this
setInternal(bool $internal)
Sets the whether the data value should be internal.
static ListDataDefinitionInterface
createFromItemType(string $item_type)
Creates a new list data definition for items of the given data type.
This method is typically used by \Drupal\Core\TypedData\TypedDataManager::createListDataDefinition() to build a definition object for an arbitrary item type. When the definition class is known, it is recommended to directly use the static create() method on that class instead; e.g.:
DataDefinitionInterface
getItemDefinition()
Gets the data definition of an item of the list.
$this
setItemDefinition(DataDefinitionInterface $definition)
Sets the item definition.
__clone()
Magic method: Implements a deep clone.
getCacheContexts()
{@inheritdoc}
getCacheTags()
{@inheritdoc}
getCacheMaxAge()
{@inheritdoc}
static protected array
normalizeValue(mixed $value, string $main_property_name)
Ensure a field value is transformed into a format keyed by delta.
static $this
createFromFieldStorageDefinition(FieldStorageDefinitionInterface $definition)
Creates a new field definition based upon a field storage definition.
In cases where one needs a field storage definitions to act like full field definitions, this creates a new field definition based upon the (limited) information available. That way it is possible to use the field definition in places where a full field definition is required; e.g., with widgets or formatters.
string
getName()
Returns the machine name of the field.
This defines how the field data is accessed from the entity. For example, if the field name is "foo", then $entity->foo returns its data.
BaseFieldDefinition
setName(string $name)
Sets the field name.
string
getType()
Returns the field type.
string
getProvider()
Returns the name of the provider of this field.
$this
setProvider(string $provider)
Sets the name of the provider of this field.
bool
isTranslatable()
Returns whether the field is translatable.
$this
setTranslatable(bool $translatable)
Sets whether the field is translatable.
bool
isRevisionable()
Returns whether the field storage is revisionable.
Note that if the entity type is revisionable and the field storage has a cardinality higher than 1, the field storage is considered revisionable by default.
$this
setRevisionable(bool $revisionable)
Sets whether the field is revisionable.
int
getCardinality()
Returns the maximum number of items allowed for the field.
Possible values are positive integers or FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED.
$this
setCardinality(int $cardinality)
Sets the maximum number of items allowed for the field.
Possible values are positive integers or FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED.
Note that if the entity type that this base field is attached to is revisionable and the field has a cardinality higher than 1, the field is considered revisionable by default.
bool
isMultiple()
Returns whether the field can contain multiple items.
bool
isQueryable()
Determines whether the field is queryable via QueryInterface.
BaseFieldDefinition
setQueryable(bool $queryable)
deprecated
deprecated
Sets whether the field is queryable.
BaseFieldDefinition
setPropertyConstraints(string $name, array $constraints)
Sets constraints for a given field item property.
Note: this overwrites any existing property constraints. If you need to add to the existing constraints, use \Drupal\Core\Field\BaseFieldDefinition::addPropertyConstraints()
BaseFieldDefinition
addPropertyConstraints(string $name, array $constraints)
Adds constraints for a given field item property.
Adds a constraint to a property of a base field item. e.g.
BaseFieldDefinition
setDisplayOptions(string $display_context, array $options)
Sets the display options for the field in forms or rendered entities.
This enables generic rendering of the field with widgets / formatters, including automated support for "In place editing", and with optional configurability in the "Manage display" / "Manage form display" UI screens.
Unless this method is called, the field remains invisible (or requires ad-hoc rendering logic).
BaseFieldDefinition
setDisplayConfigurable(string $display_context, bool $configurable)
Sets whether the display for the field can be configured.
array|null
getDisplayOptions(string $display_context)
Returns the default display options for the field.
If the field's display is configurable, the returned display options act as default values and may be overridden via the respective entity display. Otherwise, the display options will be applied to entity displays as is.
bool
isDisplayConfigurable(string $display_context)
Returns whether the display for the field can be configured.
array
getDefaultValueLiteral()
Returns the default value literal for the field.
This method retrieves the raw property assigned to the field definition. When computing the runtime default value for a field in a given entity, ::getDefaultValue() should be used instead.
string|null
getDefaultValueCallback()
Returns the default value callback for the field.
This method retrieves the raw property assigned to the field definition. When computing the runtime default value for a field in a given entity, ::getDefaultValue() should be used instead.
array
getDefaultValue(FieldableEntityInterface $entity)
Returns the default value for the field in a newly created entity.
This method computes the runtime default value for a field in a given entity. To access the raw properties assigned to the field definition, ::getDefaultValueLiteral() or ::getDefaultValueCallback() should be used instead.
setDefaultValue($value)
{@inheritdoc}
setDefaultValueCallback($callback)
{@inheritdoc}
array
getInitialValue()
Returns the initial value for the field.
$this
setInitialValue(mixed $value)
Sets an initial value for the field.
string|null
getInitialValueFromField()
Returns the name of the field that will be used for getting initial values.
$this
setInitialValueFromField(string $field_name, mixed $default_value = NULL)
Sets a field that will be used for getting initial values.
OptionsProviderInterface|null
getOptionsProvider(string $property_name, FieldableEntityInterface $entity)
Gets an options provider for the given field item property.
DataDefinitionInterface|null
getPropertyDefinition(string $name)
Gets the definition of a contained property.
DataDefinitionInterface[]
getPropertyDefinitions()
Gets an array of property definitions of contained properties.
string[]
getPropertyNames()
Returns the names of the field's subproperties.
A field is a list of items, and each item can contain one or more properties. All items for a given field contain the same property names, but the values can be different for each item.
For example, an email field might just contain a single 'value' property, while a link field might contain 'title' and 'url' properties, and a text field might contain 'value', 'summary', and 'format' properties.
string|null
getMainPropertyName()
Returns the name of the main property, if any.
Some field items consist mainly of one main property, e.g. the value of a text field or the @code target_id @endcode of an entity reference. If the field item has no main property, the method returns NULL.
protected
getFieldItemClass()
deprecated
deprecated
Helper to retrieve the field item class.
string
getTargetEntityTypeId()
Returns the ID of the entity type the field is attached to.
This method should not be confused with EntityInterface::getEntityTypeId() (configurable fields are config entities, and thus implement both interfaces):
- FieldDefinitionInterface::getTargetEntityTypeId() answers "as a field, which entity type are you attached to?".
- EntityInterface::getEntityTypeId() answers "as a (config) entity, what is your own entity type?".
$this
setTargetEntityTypeId(string $entity_type_id)
Sets the ID of the type of the entity this field is attached to.
string|null
getTargetBundle()
Gets the bundle the field is attached to.
This method should not be confused with EntityInterface::bundle() (configurable fields are config entities, and thus implement both interfaces):
- FieldDefinitionInterface::getTargetBundle() answers "as a field, which bundle are you attached to?".
- EntityInterface::bundle() answers "as a (config) entity, what is your own bundle?" (not relevant in our case, the config entity types used to store the definitions of configurable fields do not have bundles).
$this
setTargetBundle(string|null $bundle)
Sets the bundle this field is defined for.
array[]
getSchema()
Returns the field schema.
Note that this method returns an empty array for computed fields which have no schema.
array[]
getColumns()
Returns the field columns, as defined in the field schema.
bool
hasCustomStorage()
Returns the storage behavior for this field.
Indicates whether the entity type's storage should take care of storing the field values or whether it is handled separately; e.g. by the module providing the field.
bool
isBaseField()
Determines whether the field is a base field.
Base fields are not specific to a given bundle or a set of bundles. This excludes configurable fields, as they are always attached to a specific bundle.
$this
setCustomStorage(bool $custom_storage)
Sets the storage behavior for this field.
FieldStorageDefinitionInterface
getFieldStorageDefinition()
Returns the field storage definition.
string
getUniqueStorageIdentifier()
Returns a unique identifier for the field storage.
string
getUniqueIdentifier()
Returns a unique identifier for the field.
bool
isDeleted()
Returns whether the field is deleted or not.
$this
setDeleted(bool $deleted)
Sets whether the field storage is deleted.
FieldConfigInterface
getConfig(string $bundle)
Gets an object that can be saved in configuration.
Base fields are defined in code. In order to configure field definition properties per bundle use this method to create an override that can be saved in configuration.
bool
isStorageRequired()
Returns whether the field storage is required.
If a field storage is required, NOT NULL constraints will be added automatically for the required properties of a field type.
BaseFieldDefinition
setStorageRequired(bool $required)
Sets whether the field storage is required.