public static function ContentTypeCloneHelper::copyFieldDisplay in Content Type Clone 8
1 call to ContentTypeCloneHelper::copyFieldDisplay()
- CloneContentType::cloneContentTypeField in src/
Form/ CloneContentType.php - Clones a content type field.
File
- src/
Helpers/ ContentTypeCloneHelper.php, line 45
Class
- ContentTypeCloneHelper
- Class ContentTypeCloneHelper.
Namespace
Drupal\content_type_clone\HelpersCode
public static function copyFieldDisplay($display, $mode, $data) {
// Prepare the storage string
$storage = 'entity_' . $display . '_display';
//Get the source field name.
$sourceFieldName = $data['field']
->getName();
//Get the source form display
$sourceDisplay = \Drupal::entityTypeManager()
->getStorage($storage)
->load('node.' . $data['values']['source_machine_name'] . '.' . $mode)
->toArray();
//Prepare the target form display
$targetDisplay = ContentTypeCloneHelper::replaceInArray($data['values']['source_machine_name'], $data['values']['target_machine_name'], $sourceDisplay);
unset($targetDisplay['uuid']);
unset($targetDisplay['_core']);
//Save the target display
if ($display == 'form') {
//Save the form display
$displayConfig = \Drupal::configFactory()
->getEditable('core.' . $storage . '.node.' . $data['values']['target_machine_name'] . '.' . $mode)
->setData($targetDisplay)
->save();
}
else {
if ($display == 'view') {
//Save the view display
$entityDisplay = entity_get_display('node', $data['values']['target_machine_name'], $mode);
if (isset($targetDisplay['content'][$sourceFieldName])) {
$entityDisplay
->setComponent($sourceFieldName, $targetDisplay['content'][$sourceFieldName]);
}
//Hide the field if needed
if (isset($targetDisplay['hidden'][$sourceFieldName]) && (int) $targetDisplay['hidden'][$sourceFieldName] == 1) {
$entityDisplay
->removeComponent($sourceFieldName);
}
//Save the display
$entityDisplay
->save();
}
}
}