3 namespace Drupal\image\Plugin\Field\FieldFormatter;
5 use Drupal\Core\Field\EntityReferenceFieldItemListInterface;
6 use Drupal\field\FieldConfigInterface;
7 use Drupal\file\Plugin\Field\FieldFormatter\FileFormatterBase;
10 * Base class for image file formatters.
12 abstract class ImageFormatterBase extends FileFormatterBase {
17 protected function getEntitiesToView(EntityReferenceFieldItemListInterface $items, $langcode) {
18 // Add the default image if needed.
19 if ($items->isEmpty()) {
20 $default_image = $this->getFieldSetting('default_image');
21 // If we are dealing with a configurable field, look in both
22 // instance-level and field-level settings.
23 if (empty($default_image['uuid']) && $this->fieldDefinition instanceof FieldConfigInterface) {
24 $default_image = $this->fieldDefinition->getFieldStorageDefinition()->getSetting('default_image');
26 if (!empty($default_image['uuid']) && $file = \Drupal::entityManager()->loadEntityByUuid('file', $default_image['uuid'])) {
27 // Clone the FieldItemList into a runtime-only object for the formatter,
28 // so that the fallback image can be rendered without affecting the
29 // field values in the entity being rendered.
30 $items = clone $items;
32 'target_id' => $file->id(),
33 'alt' => $default_image['alt'],
34 'title' => $default_image['title'],
35 'width' => $default_image['width'],
36 'height' => $default_image['height'],
39 '_is_default' => TRUE,
41 $file->_referringItem = $items[0];
45 return parent::getEntitiesToView($items, $langcode);