FieldStorageDefinitionInterface.php
Same filename in other branches
Namespace
Drupal\Core\FieldFile
-
core/
lib/ Drupal/ Core/ Field/ FieldStorageDefinitionInterface.php
View source
<?php
namespace Drupal\Core\Field;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Entity\FieldableEntityInterface;
/**
* Defines an interface for entity field storage definitions.
*
* Field storage definitions represent the part of full field definitions (see
* FieldDefinitionInterface) that is responsible for defining how the field is
* stored. While field definitions may differ by entity bundle, all of those
* bundle fields have to share the same common field storage definition. Thus,
* the storage definitions can be defined by entity type only.
* The bundle fields corresponding to a field storage definition may provide
* additional information; e.g., they may provide bundle-specific settings or
* constraints that are not present in the storage definition. However bundle
* fields may not override or alter any information provided by the storage
* definition except for the label and the description; e.g., any constraints
* and settings on the storage definition must be present on the bundle field as
* well.
*
* @see hook_entity_field_storage_info()
*/
interface FieldStorageDefinitionInterface extends CacheableDependencyInterface {
/**
* Value indicating a field accepts an unlimited number of values.
*/
const CARDINALITY_UNLIMITED = -1;
/**
* 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.
*
* @return string
* The field name.
*/
public function getName();
/**
* Returns the field type.
*
* @return string
* The field type, i.e. the id of a field type plugin. For example 'text'.
*
* @see \Drupal\Core\Field\FieldTypePluginManagerInterface
*/
public function getType();
/**
* Returns the storage settings.
*
* Each field type defines the settings that are meaningful for that type.
* For example, a text field can define a 'max_length' setting, and an image
* field can define an 'alt_field_required' setting.
*
* The method always returns an array of all available settings for this field
* type, possibly with the default values merged in if values have not been
* provided for all available settings.
*
* @return mixed[]
* An array of key/value pairs.
*/
public function getSettings();
/**
* Returns the value of a given storage setting.
*
* @param string $setting_name
* The setting name.
*
* @return mixed
* The setting value or NULL if the setting name doesn't exist.
*/
public function getSetting($setting_name);
/**
* Returns whether the field supports translation.
*
* @return bool
* TRUE if the field supports translation.
*/
public function isTranslatable();
/**
* Sets whether the field supports translation.
*
* @param bool $translatable
* Whether the field supports translation.
*
* @return $this
*/
public function setTranslatable($translatable);
/**
* 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.
*
* @return bool
* TRUE if the field is revisionable.
*/
public function isRevisionable();
/**
* Returns the human-readable label for the field.
*
* @return string
* The field label.
*/
public function getLabel();
/**
* Returns the human-readable description for the field.
*
* This is displayed in addition to the label in places where additional
* descriptive information is helpful. For example, as help text below the
* form element in entity edit forms.
*
* @return string|null
* The field description, or NULL if no description is available.
*/
public function getDescription();
/**
* Gets an options provider for the given field item property.
*
* @param string $property_name
* The name of the property to get options for; e.g., 'value'.
* @param \Drupal\Core\Entity\FieldableEntityInterface $entity
* The entity for which the options should be provided.
*
* @return \Drupal\Core\TypedData\OptionsProviderInterface|null
* An options provider, or NULL if no options are defined.
*/
public function getOptionsProvider($property_name, FieldableEntityInterface $entity);
/**
* Returns whether the field can contain multiple items.
*
* @return bool
* TRUE if the field can contain multiple items, FALSE otherwise.
*/
public function isMultiple();
/**
* Returns the maximum number of items allowed for the field.
*
* Possible values are positive integers or
* FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED.
*
* @return int
* The field cardinality.
*/
public function getCardinality();
/**
* Gets the definition of a contained property.
*
* @param string $name
* The name of property.
*
* @return \Drupal\Core\TypedData\DataDefinitionInterface|null
* The definition of the property or NULL if the property does not exist.
*/
public function getPropertyDefinition($name);
/**
* Gets an array of property definitions of contained properties.
*
* @return \Drupal\Core\TypedData\DataDefinitionInterface[]
* An array of property definitions of contained properties, keyed by
* property name.
*/
public function getPropertyDefinitions();
/**
* 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.
*
* @return string[]
* The property names.
*/
public function getPropertyNames();
/**
* 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.
*
* @return string|null
* The name of the value property, or NULL if there is none.
*/
public function getMainPropertyName();
/**
* 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):
* - FieldStorageDefinitionInterface::getTargetEntityTypeId() answers "as a
* field storage, which entity type are you attached to?".
* - EntityInterface::getEntityTypeId() answers "as a (config) entity, what
* is your own entity type?".
*
* @return string
* The entity type ID.
*/
public function getTargetEntityTypeId();
/**
* Returns the field schema.
*
* Note that this method returns an empty array for computed fields which have
* no schema.
*
* @return array[]
* The field schema, as an array of key/value pairs in the format returned
* by \Drupal\Core\Field\FieldItemInterface::schema():
* - columns: An array of Schema API column specifications, keyed by column
* name. This specifies what comprises a single value for a given field.
* No assumptions should be made on how storage backends internally use
* the original column name to structure their storage.
* - indexes: An array of Schema API index definitions. Some storage
* backends might not support indexes.
* - unique keys: An array of Schema API unique key definitions. Some
* storage backends might not support unique keys.
* - foreign keys: An array of Schema API foreign key definitions. Note,
* however, that depending on the storage backend specified for the field,
* the field data is not necessarily stored in SQL.
*/
public function getSchema();
/**
* Returns the field columns, as defined in the field schema.
*
* @return array[]
* The array of field columns, keyed by column name, in the same format
* returned by getSchema().
*
* @see \Drupal\Core\Field\FieldStorageDefinitionInterface::getSchema()
*/
public function getColumns();
/**
* Returns an array of validation constraints.
*
* See \Drupal\Core\TypedData\DataDefinitionInterface::getConstraints() for
* details.
*
* @return array[]
* An array of validation constraint definitions, keyed by constraint name.
* Each constraint definition can be used for instantiating
* \Symfony\Component\Validator\Constraint objects.
*
* @see \Symfony\Component\Validator\Constraint
*/
public function getConstraints();
/**
* Returns a validation constraint.
*
* See \Drupal\Core\TypedData\DataDefinitionInterface::getConstraints() for
* details.
*
* @param string $constraint_name
* The name of the constraint, i.e. its plugin id.
*
* @return array
* A validation constraint definition which can be used for instantiating a
* \Symfony\Component\Validator\Constraint object.
*
* @see \Symfony\Component\Validator\Constraint
*/
public function getConstraint($constraint_name);
/**
* Returns the name of the provider of this field.
*
* @return string
* The provider name; e.g., the module name.
*/
public function getProvider();
/**
* 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.
*
* @return bool
* FALSE if the storage takes care of storing the field, TRUE otherwise.
*/
public function hasCustomStorage();
/**
* 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.
*
* @return bool
* Whether the field is a base field.
*/
public function isBaseField();
/**
* Returns a unique identifier for the field storage.
*
* @return string
*/
public function getUniqueStorageIdentifier();
/**
* Returns whether the field is deleted or not.
*
* @return bool
* TRUE if the field is deleted, FALSE otherwise.
*/
public function isDeleted();
}
Interfaces
Title | Deprecated | Summary |
---|---|---|
FieldStorageDefinitionInterface | Defines an interface for entity field storage definitions. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.