function FieldStorageAddForm::getNewFieldDefaults
Same name in other branches
- 11.x core/modules/field_ui/src/Form/FieldStorageAddForm.php \Drupal\field_ui\Form\FieldStorageAddForm::getNewFieldDefaults()
Get default options from preconfigured options for a new field.
Parameters
string $field_name: The machine name of the field.
string $preset_key: A key in the preconfigured options array for the field.
Return value
array An array of settings with keys 'field_storage_config', 'field_config', 'entity_form_display', and 'entity_view_display'.
Throws
\Drupal\Component\Plugin\Exception\PluginNotFoundException
See also
\Drupal\Core\Field\PreconfiguredFieldUiOptionsInterface::getPreconfiguredOptions()
1 call to FieldStorageAddForm::getNewFieldDefaults()
- FieldStorageAddForm::submitForm in core/
modules/ field_ui/ src/ Form/ FieldStorageAddForm.php - Form submission handler.
File
-
core/
modules/ field_ui/ src/ Form/ FieldStorageAddForm.php, line 545
Class
- FieldStorageAddForm
- Provides a form for the "field storage" add page.
Namespace
Drupal\field_ui\FormCode
protected function getNewFieldDefaults(string $field_name, string $preset_key) : array {
$field_type_definition = $this->fieldTypePluginManager
->getDefinition($field_name);
$options = $this->fieldTypePluginManager
->getPreconfiguredOptions($field_type_definition['id']);
$field_options = $options[$preset_key] ?? [];
$default_options = [];
// Merge in preconfigured field storage options.
if (isset($field_options['field_storage_config'])) {
foreach ([
'cardinality',
'settings',
] as $key) {
if (isset($field_options['field_storage_config'][$key])) {
$default_options['field_storage_config'][$key] = $field_options['field_storage_config'][$key];
}
}
}
// Merge in preconfigured field options.
if (isset($field_options['field_config'])) {
foreach ([
'required',
'settings',
] as $key) {
if (isset($field_options['field_config'][$key])) {
$default_options['field_config'][$key] = $field_options['field_config'][$key];
}
}
}
// Preconfigured options only apply to the default display modes.
foreach ([
'entity_form_display',
'entity_view_display',
] as $key) {
if (isset($field_options[$key])) {
$default_options[$key] = [
'default' => array_intersect_key($field_options[$key], [
'type' => '',
'settings' => [],
]),
];
}
else {
$default_options[$key] = [
'default' => [],
];
}
}
return $default_options;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.