protected function FieldManager::createFormDisplay in Scheduled Updates 8
Create a form display for a newly clone field.
This function attempts to use same setting settings as the source field.
Parameters
\Drupal\scheduled_updates\ScheduledUpdateTypeInterface $scheduled_update_type:
$field_name:
$field_config_id:
$entity_type:
$definition: Source field definition
$new_field_name:
1 call to FieldManager::createFormDisplay()
- FieldManager::cloneField in src/
FieldManager.php - [@inheritdoc}
File
- src/
FieldManager.php, line 311 - Contains \Drupal\scheduled_updates\FieldManager.
Class
- FieldManager
- Field Manager for handling fields for Scheduled Updates.
Namespace
Drupal\scheduled_updatesCode
protected function createFormDisplay(ScheduledUpdateTypeInterface $scheduled_update_type, $field_config_id, FieldStorageDefinitionInterface $definition, $new_field_name) {
$destination_bundle = $scheduled_update_type
->id();
$field_name = $definition
->getName();
$entity_type = $scheduled_update_type
->getUpdateEntityType();
/** @var EntityFormDisplay $destination_form_display */
$destination_form_display = EntityFormDisplay::load("scheduled_update.{$destination_bundle}.default");
if (empty($destination_form_display)) {
$destination_form_display = EntityFormDisplay::create([
'targetEntityType' => 'scheduled_update',
'bundle' => $destination_bundle,
'mode' => 'default',
'status' => TRUE,
]);
}
$display_options = [];
if ($field_config_id) {
$parts = explode('.', $field_config_id);
$source_bundle = $parts[1];
/** @var EntityFormDisplay $source_form_display */
$source_form_display = EntityFormDisplay::load("{$entity_type}.{$source_bundle}.default");
$display_options = $source_form_display
->getComponent($field_name);
}
else {
if ($definition instanceof BaseFieldDefinition) {
$display_options = $definition
->getDisplayOptions('form');
if (empty($display_options)) {
if ($definition
->getType()) {
// Provide default display for base boolean fields that don't have their own form display
$display_options = [
'type' => 'boolean_checkbox',
'settings' => [
'display_label' => TRUE,
],
];
}
}
}
}
if (empty($display_options)) {
$display_options = [];
}
if ($destination_form_display) {
$destination_form_display
->setComponent($new_field_name, $display_options);
$destination_form_display
->save();
}
else {
// Alert user if display options could not be created.
// @todo Create default display options even none on source.
\Drupal::messenger()
->addWarning($this
->t('Form display options could not be created for @field they will have to be created manually.', [
'@field' => $field_name,
]));
}
}