inline_media_form-1.0.0-beta1/src/FieldSummarizer/EntityReferenceFieldSummarizer.php

src/FieldSummarizer/EntityReferenceFieldSummarizer.php
<?php

namespace Drupal\inline_media_form\FieldSummarizer;

use Drupal\Core\Field\EntityReferenceFieldItemListInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Language\LanguageInterface;

/**
 * Summarizer for entity reference fields.
 */
class EntityReferenceFieldSummarizer extends FieldSummarizerBase {

  /**
   * {@inheritdoc}
   */
  public static function canHandle(FieldDefinitionInterface $field_definition): bool {
    $field_type = $field_definition->getType();

    return ($field_type == 'entity_reference');
  }

  /**
   * {@inheritdoc}
   */
  public function summarize(FieldItemListInterface $field_values,
                            string $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED): string {
    assert($field_values instanceof EntityReferenceFieldItemListInterface);

    $summary_items       = [];
    $referenced_entities = $field_values->referencedEntities();

    foreach ($referenced_entities as $referenced_entity) {
      if (!$referenced_entity->access('view label')) {
        continue;
      }

      $entity_repository = $this->getEntityRepository();

      // Switch to the entity translation in the current context.
      $entity =
        $entity_repository->getTranslationFromContext(
          $referenced_entity,
          $langcode
        );

      $summary_items[] = $entity->label();
    }

    $summary = implode(', ', $summary_items);

    return $this->shortenSummary(trim($summary));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc