You are here

protected function BlazyFileFormatterBase::getEntitiesToView in Blazy 8.2

Same name and namespace in other branches
  1. 8 src/Plugin/Field/FieldFormatter/BlazyFileFormatterBase.php \Drupal\blazy\Plugin\Field\FieldFormatter\BlazyFileFormatterBase::getEntitiesToView()

A clone of Drupal\image\Plugin\Field\FieldFormatter\ImageFormatterBase so to have one base class to extend for both image and file ER formatters.

Overrides EntityReferenceFormatterBase::getEntitiesToView

1 call to BlazyFileFormatterBase::getEntitiesToView()
BlazyFormatterBlazy::viewElements in src/Plugin/Field/FieldFormatter/BlazyFormatterBlazy.php
Builds a renderable array for a field value.

File

src/Plugin/Field/FieldFormatter/BlazyFileFormatterBase.php, line 104

Class

BlazyFileFormatterBase
Base class for blazy/slick image, and file ER formatters.

Namespace

Drupal\blazy\Plugin\Field\FieldFormatter

Code

protected function getEntitiesToView(EntityReferenceFieldItemListInterface $items, $langcode) {

  // Add the default image if the type is image.
  if ($items
    ->isEmpty() && $this->fieldDefinition
    ->getType() === 'image') {
    $default_image = $this
      ->getFieldSetting('default_image');

    // If we are dealing with a configurable field, look in both
    // instance-level and field-level settings.
    if (empty($default_image['uuid']) && $this->fieldDefinition instanceof FieldConfigInterface) {
      $default_image = $this->fieldDefinition
        ->getFieldStorageDefinition()
        ->getSetting('default_image');
    }
    if (!empty($default_image['uuid']) && ($file = $this->formatter
      ->getEntityRepository()
      ->loadEntityByUuid('file', $default_image['uuid']))) {

      // Clone the FieldItemList into a runtime-only object for the formatter,
      // so that the fallback image can be rendered without affecting the
      // field values in the entity being rendered.
      $items = clone $items;
      $items
        ->setValue([
        'target_id' => $file
          ->id(),
        'alt' => $default_image['alt'],
        'title' => $default_image['title'],
        'width' => $default_image['width'],
        'height' => $default_image['height'],
        'entity' => $file,
        '_loaded' => TRUE,
        '_is_default' => TRUE,
      ]);
      $file->_referringItem = $items[0];
    }
  }
  return parent::getEntitiesToView($items, $langcode);
}