public function FieldConfig::__construct in Drupal 9
Same name and namespace in other branches
- 8 core/modules/field/src/Entity/FieldConfig.php \Drupal\field\Entity\FieldConfig::__construct()
Constructs a FieldConfig object.
In most cases, Field entities are created via FieldConfig::create($values), where $values is the same parameter as in this constructor.
Parameters
array $values: An array of field properties, keyed by property name. The storage associated with the field can be specified either with:
- field_storage: the FieldStorageConfigInterface object,
or by referring to an existing field storage in the current configuration with:
- field_name: The field name.
- entity_type: The entity type.
Additionally, a 'bundle' property is required to indicate the entity bundle to which the field is attached to. Other array elements will be used to set the corresponding properties on the class; see the class property documentation for details.
string $entity_type: (optional) The entity type on which the field should be created. Defaults to "field_config".
Overrides ConfigEntityBase::__construct
File
- core/
modules/ field/ src/ Entity/ FieldConfig.php, line 97
Class
- FieldConfig
- Defines the Field entity.
Namespace
Drupal\field\EntityCode
public function __construct(array $values, $entity_type = 'field_config') {
// Allow either an injected FieldStorageConfig object, or a field_name and
// entity_type.
if (isset($values['field_storage'])) {
if (!$values['field_storage'] instanceof FieldStorageConfigInterface) {
throw new FieldException('Attempt to create a configurable field for a non-configurable field storage.');
}
$field_storage = $values['field_storage'];
$values['field_name'] = $field_storage
->getName();
$values['entity_type'] = $field_storage
->getTargetEntityTypeId();
// The internal property is fieldStorage, not field_storage.
unset($values['field_storage']);
$values['fieldStorage'] = $field_storage;
}
else {
if (empty($values['field_name'])) {
throw new FieldException('Attempt to create a field without a field_name.');
}
if (empty($values['entity_type'])) {
throw new FieldException("Attempt to create a field '{$values['field_name']}' without an entity_type.");
}
}
// 'bundle' is required in either case.
if (empty($values['bundle'])) {
throw new FieldException("Attempt to create a field '{$values['field_name']}' without a bundle.");
}
parent::__construct($values, $entity_type);
}