Loading src/Plugin/Field/FieldFormatter/CustomTwigFormatter.php +36 −16 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\custom_twig_formatter\Plugin\Field\FieldFormatter; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FormatterBase; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Form\FormStateInterface; Loading Loading @@ -118,21 +119,38 @@ class CustomTwigFormatter extends FormatterBase { ]; // Generate help text for replacement patterns. $configTarget = $this->fieldDefinition->getConfigTarget(); $configTarget = explode('.', $configTarget); $entity_type = $configTarget[0]; $bundle = $configTarget[1]; $entity = $this->entityTypeManager->getStorage($entity_type)->create(['type' => $bundle]); $fieldDefinitions = [ $this->fieldDefinition->getName() => $this->fieldDefinition, ]; $fieldsDoc = []; // Default - current field. $fields = [ $this->fieldDefinition->getName() => $this->fieldDefinition, ]; $entity_type = $this->fieldDefinition->getTargetEntityTypeId(); $bundle = $this->fieldDefinition->getTargetBundle(); if ($bundle) { $storage = $this->entityTypeManager->getStorage($entity_type); $entity = $storage ->create([$storage->getEntityType()->getKey('bundle') => $bundle]); $fieldDefinitions = $this->entityFieldManager->getFieldDefinitions($entity_type, $bundle); $fields = $entity->getFields(); } $fieldsDoc = []; foreach ($fieldDefinitions as $field_id => $value) { $type = $value->getType(); $fieldsDoc[$field_id]['type'] = $type; } foreach ($entity->getFields() as $field_id => $value) { $class_name = get_class($value); $fieldsDoc[$field_id]['class'] = $class_name; foreach ($fields as $field_id => $value) { if ($value instanceof FieldDefinitionInterface) { $fieldsDoc[$field_id]['class'] = $value->getClass(); continue; } $fieldsDoc[$field_id]['class'] = $value->getFieldDefinition()->getClass(); } $tokensDoc = [ 'label' => 'string', Loading Loading @@ -168,12 +186,14 @@ class CustomTwigFormatter extends FormatterBase { '#markup' => $tokens_current_field, ]; if ($bundle) { $form['tokens_all'] = [ '#type' => 'details', '#title' => $this->t('Replacement patterns for other fields'), '#open' => FALSE, '#markup' => $tokens_all, ]; } return $form; } Loading Loading @@ -268,7 +288,7 @@ class CustomTwigFormatter extends FormatterBase { $elements['#attached']['library'][] = "file/drupal.file"; } return $elements; return [$elements]; } } Loading
src/Plugin/Field/FieldFormatter/CustomTwigFormatter.php +36 −16 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\custom_twig_formatter\Plugin\Field\FieldFormatter; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Field\FormatterBase; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Form\FormStateInterface; Loading Loading @@ -118,21 +119,38 @@ class CustomTwigFormatter extends FormatterBase { ]; // Generate help text for replacement patterns. $configTarget = $this->fieldDefinition->getConfigTarget(); $configTarget = explode('.', $configTarget); $entity_type = $configTarget[0]; $bundle = $configTarget[1]; $entity = $this->entityTypeManager->getStorage($entity_type)->create(['type' => $bundle]); $fieldDefinitions = [ $this->fieldDefinition->getName() => $this->fieldDefinition, ]; $fieldsDoc = []; // Default - current field. $fields = [ $this->fieldDefinition->getName() => $this->fieldDefinition, ]; $entity_type = $this->fieldDefinition->getTargetEntityTypeId(); $bundle = $this->fieldDefinition->getTargetBundle(); if ($bundle) { $storage = $this->entityTypeManager->getStorage($entity_type); $entity = $storage ->create([$storage->getEntityType()->getKey('bundle') => $bundle]); $fieldDefinitions = $this->entityFieldManager->getFieldDefinitions($entity_type, $bundle); $fields = $entity->getFields(); } $fieldsDoc = []; foreach ($fieldDefinitions as $field_id => $value) { $type = $value->getType(); $fieldsDoc[$field_id]['type'] = $type; } foreach ($entity->getFields() as $field_id => $value) { $class_name = get_class($value); $fieldsDoc[$field_id]['class'] = $class_name; foreach ($fields as $field_id => $value) { if ($value instanceof FieldDefinitionInterface) { $fieldsDoc[$field_id]['class'] = $value->getClass(); continue; } $fieldsDoc[$field_id]['class'] = $value->getFieldDefinition()->getClass(); } $tokensDoc = [ 'label' => 'string', Loading Loading @@ -168,12 +186,14 @@ class CustomTwigFormatter extends FormatterBase { '#markup' => $tokens_current_field, ]; if ($bundle) { $form['tokens_all'] = [ '#type' => 'details', '#title' => $this->t('Replacement patterns for other fields'), '#open' => FALSE, '#markup' => $tokens_all, ]; } return $form; } Loading Loading @@ -268,7 +288,7 @@ class CustomTwigFormatter extends FormatterBase { $elements['#attached']['library'][] = "file/drupal.file"; } return $elements; return [$elements]; } }