Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Field/FieldConfigInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Field/FieldConfigInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,280 @@ +<?php + +namespace Drupal\Core\Field; + +use Drupal\Core\Config\Entity\ConfigEntityInterface; + +/** + * Defines an interface for configurable field definitions. + * + * This interface allows both configurable fields and overridden base fields to + * share a common interface. The interface also extends ConfigEntityInterface + * to ensure that implementations have the expected save() method. + * + * @see \Drupal\Core\Field\Entity\BaseFieldOverride + * @see \Drupal\field\Entity\FieldConfig + */ +interface FieldConfigInterface extends FieldDefinitionInterface, ConfigEntityInterface { + + /** + * Sets the field definition label. + * + * @param string $label + * The label to set. + * + * @return $this + */ + public function setLabel($label); + + /** + * Sets a human readable description. + * + * Descriptions are usually used on user interfaces where the data is edited + * or displayed. + * + * @param string $description + * The description for this field. + * + * @return $this + */ + public function setDescription($description); + + /** + * Sets whether the field is translatable. + * + * @param bool $translatable + * Whether the field is translatable. + * + * @return $this + */ + public function setTranslatable($translatable); + + /** + * Sets field settings. + * + * Note that the method does not unset existing settings not specified in the + * incoming $settings array. + * + * For example: + * @code + * // Given these are the default settings. + * $field_definition->getSettings() === [ + * 'fruit' => 'apple', + * 'season' => 'summer', + * ]; + * // Change only the 'fruit' setting. + * $field_definition->setSettings(['fruit' => 'banana']); + * // The 'season' setting persists unchanged. + * $field_definition->getSettings() === [ + * 'fruit' => 'banana', + * 'season' => 'summer', + * ]; + * @endcode + * + * For clarity, it is preferred to use setSetting() if not all available + * settings are supplied. + * + * @param array $settings + * The array of field settings. + * + * @return $this + */ + public function setSettings(array $settings); + + /** + * Sets the value for a field setting by name. + * + * @param string $setting_name + * The name of the setting. + * @param mixed $value + * The value of the setting. + * + * @return $this + */ + public function setSetting($setting_name, $value); + + /** + * Sets whether the field can be empty. + * + * If a field is required, an entity needs to have at least a valid, + * non-empty item in that field's FieldItemList in order to pass validation. + * + * An item is considered empty if its isEmpty() method returns TRUE. + * Typically, that is if at least one of its required properties is empty. + * + * @param bool $required + * TRUE if the field is required. FALSE otherwise. + * + * @return $this + * The current object, for a fluent interface. + */ + public function setRequired($required); + + /** + * Sets a default value. + * + * Note that if a default value callback is set, it will take precedence over + * any value set here. + * + * @param mixed $value + * The default value for the field. This can be either: + * - a literal, in which case it will be assigned to the first property of + * the first item. + * - a numerically indexed array of items, each item being a property/value + * array. + * - a non-numerically indexed array, in which case the array is assumed to + * be a property/value array and used as the first item + * - NULL or array() for no default value. + * + * @return $this + */ + public function setDefaultValue($value); + + /** + * Sets a custom default value callback. + * + * If set, the callback overrides any set default value. + * + * @param string|null $callback + * The callback to invoke for getting the default value (pass NULL to unset + * a previously set callback). The callback will be invoked with the + * following arguments: + * - \Drupal\Core\Entity\FieldableEntityInterface $entity + * The entity being created. + * - \Drupal\Core\Field\FieldDefinitionInterface $definition + * The field definition. + * It should return the default value in the format accepted by the + * setDefaultValue() method. + * + * @return $this + */ + public function setDefaultValueCallback($callback); + + /** + * 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\FieldConfigInterface::addPropertyConstraints() + * + * Note that constraints added via this method are not stored in configuration + * and as such need to be added at runtime using + * hook_entity_bundle_field_info_alter(). + * + * @param string $name + * The name of the property to set constraints for. + * @param array $constraints + * The constraints to set. + * + * @return static + * The object itself for chaining. + * + * @see hook_entity_bundle_field_info_alter() + */ + public function setPropertyConstraints($name, array $constraints); + + /** + * Adds constraints for a given field item property. + * + * Adds a constraint to a property of a field item. e.g. + * @code + * // Limit the field item's value property to the range 0 through 10. + * // e.g. $node->field_how_many->value. + * $field->addPropertyConstraints('value', [ + * 'Range' => [ + * 'min' => 0, + * 'max' => 10, + * ] + * ]); + * @endcode + * + * If you want to add a validation constraint that applies to the + * \Drupal\Core\Field\FieldItemList, use FieldConfigInterface::addConstraint() + * instead. + * + * Note: passing a new set of options for an existing property constraint will + * overwrite with the new options. + * + * Note that constraints added via this method are not stored in configuration + * and as such need to be added at runtime using + * hook_entity_bundle_field_info_alter(). + * + * @param string $name + * The name of the property to set constraints for. + * @param array $constraints + * The constraints to set. + * + * @return static + * The object itself for chaining. + * + * @see \Drupal\Core\Field\FieldConfigInterface::addConstraint() + * @see hook_entity_bundle_field_info_alter() + */ + public function addPropertyConstraints($name, array $constraints); + + /** + * Adds a validation constraint to the FieldItemList. + * + * Note: If you wish to apply a constraint to just a property of a FieldItem + * use \Drupal\Core\Field\FieldConfigInterface::addPropertyConstraints() + * instead. + * @code + * // Add a constraint to the 'field_username' FieldItemList. + * // e.g. $node->field_username + * $fields['field_username']->addConstraint('UniqueField'); + * @endcode + * + * If you wish to apply a constraint to a \Drupal\Core\Field\FieldItem instead + * of a property or FieldItemList, you can use the + * \Drupal\Core\Field\FieldConfigBase::getItemDefinition() method. + * @code + * // Add a constraint to the 'field_entity_reference' FieldItem (entity + * // reference item). + * $fields['field_entity_reference']->getItemDefinition()->addConstraint('MyCustomFieldItemValidationPlugin', []); + * @endcode + * + * See \Drupal\Core\TypedData\DataDefinitionInterface::getConstraints() for + * details. + * + * Note that constraints added via this method are not stored in configuration + * and as such need to be added at runtime using + * hook_entity_bundle_field_info_alter(). + * + * @param string $constraint_name + * The name of the constraint to add, i.e. its plugin id. + * @param array|null $options + * The constraint options as required by the constraint plugin, or NULL. + * + * @return static + * The object itself for chaining. + * + * @see \Drupal\Core\Field\FieldItemList + * @see \Drupal\Core\Field\FieldConfigInterface::addPropertyConstraints() + * @see hook_entity_bundle_field_info_alter() + */ + public function addConstraint($constraint_name, $options = NULL); + + /** + * Sets the array of validation constraints for the FieldItemList. + * + * NOTE: This will overwrite any previously set constraints. In most cases + * FieldConfigInterface::addConstraint() should be used instead. + * + * Note that constraints added via this method are not stored in configuration + * and as such need to be added at runtime using + * hook_entity_bundle_field_info_alter(). + * + * @param array $constraints + * The array of constraints. See + * \Drupal\Core\TypedData\TypedDataManager::getConstraints() for details. + * + * @return $this + * + * @see \Drupal\Core\TypedData\DataDefinition::addConstraint() + * @see \Drupal\Core\TypedData\DataDefinition::getConstraints() + * @see \Drupal\Core\Field\FieldItemList + * @see hook_entity_bundle_field_info_alter() + */ + public function setConstraints(array $constraints); + +}