123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- <?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 a '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.
- */
- 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 is revisionable.
- *
- * @return bool
- * TRUE if the field is revisionable.
- */
- public function isRevisionable();
- /**
- * Determines whether the field is queryable via QueryInterface.
- *
- * @return bool
- * TRUE if the field is queryable.
- *
- * @deprecated in Drupal 8.4.0 and will be removed before Drupal 9.0.0. Use
- * \Drupal\Core\Field\FieldStorageDefinitionInterface::hasCustomStorage()
- * instead.
- *
- * @see https://www.drupal.org/node/2856563
- */
- public function isQueryable();
- /**
- * 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();
- }
|