PictureBackgroundFormatterMedia.php in Picture Background Formatter 8
File
src/Plugin/Field/FieldFormatter/PictureBackgroundFormatterMedia.php
View source
<?php
namespace Drupal\picture_background_formatter\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem;
use Drupal\Core\Field\FieldDefinitionInterface;
class PictureBackgroundFormatterMedia extends PictureBackgroundFormatter {
protected function needsEntityLoad(EntityReferenceItem $item) {
return !$item
->hasNewEntity();
}
public function viewElements(FieldItemListInterface $items, $langcode) {
$media = $this
->getEntitiesToView($items, $langcode);
$files = [];
if (empty($media)) {
return [];
}
$entity = $items
->getEntity();
foreach ($media as $delta => $media_item) {
$type_configuration = method_exists($media_item, 'getSource') ? $media_item
->getSource()
->getConfiguration() : $media_item
->getType()
->getConfiguration();
$image_items = isset($type_configuration['source_field']) ? $media_item
->get($type_configuration['source_field']) : NULL;
foreach ($image_items as $image_item) {
$files[] = $image_item->entity;
}
}
return $this
->build_element($files, $entity);
}
public static function isApplicable(FieldDefinitionInterface $field_definition) {
$target_type = $field_definition
->getFieldStorageDefinition()
->getSetting('target_type');
return $target_type == 'media';
}
}