You are here

protected function WebformEntityReferenceTrait::formatTextItem in Webform 8.5

Same name and namespace in other branches
  1. 6.x src/Plugin/WebformElement/WebformEntityReferenceTrait.php \Drupal\webform\Plugin\WebformElement\WebformEntityReferenceTrait::formatTextItem()
1 call to WebformEntityReferenceTrait::formatTextItem()
WebformEntityReferenceTrait::formatHtmlItem in src/Plugin/WebformElement/WebformEntityReferenceTrait.php

File

src/Plugin/WebformElement/WebformEntityReferenceTrait.php, line 99

Class

WebformEntityReferenceTrait
Provides an 'entity_reference' trait.

Namespace

Drupal\webform\Plugin\WebformElement

Code

protected function formatTextItem(array $element, WebformSubmissionInterface $webform_submission, array $options = []) {
  $entity = $this
    ->getTargetEntity($element, $webform_submission, $options);
  if (!$entity) {
    return '';
  }
  $format = $this
    ->getItemFormat($element);
  switch ($format) {
    case 'id':
      return $entity
        ->id();
    case 'breadcrumb':
      if ($entity
        ->getEntityTypeId() === 'taxonomy_term') {

        /** @var \Drupal\taxonomy\TermStorageInterface $taxonomy_storage */
        $taxonomy_storage = \Drupal::entityTypeManager()
          ->getStorage('taxonomy_term');
        $parents = $taxonomy_storage
          ->loadAllParents($entity
          ->id());
        $breadcrumb = [];
        foreach ($parents as $parent) {
          $breadcrumb[] = $parent
            ->label();
        }
        $element += [
          '#delimiter' => ' › ',
        ];
        return implode($element['#delimiter'], array_reverse($breadcrumb));
      }
      return $entity
        ->label();
    case 'label':
      return $entity
        ->label();
    case 'raw':
      $entity_id = $entity
        ->id();
      $entity_type = $entity
        ->getEntityTypeId();
      return "{$entity_type}:{$entity_id}";
    case 'text':
    default:
      return sprintf('%s (%s)', $entity
        ->label(), $entity
        ->id());
  }
}