3 namespace Drupal\image\Plugin\Field\FieldFormatter;
5 use Drupal\Core\Cache\CacheableMetadata;
6 use Drupal\Core\Field\FieldItemListInterface;
7 use Drupal\Core\Form\FormStateInterface;
10 * Plugin implementation of the 'image_url' formatter.
14 * label = @Translation("URL to image"),
20 class ImageUrlFormatter extends ImageFormatter {
25 public static function defaultSettings() {
34 public function settingsForm(array $form, FormStateInterface $form_state) {
35 $element = parent::settingsForm($form, $form_state);
37 unset($element['image_link']);;
45 public function settingsSummary() {
46 $summary = parent::settingsSummary();
53 public function viewElements(FieldItemListInterface $items, $langcode) {
56 /** @var \Drupal\Core\Field\EntityReferenceFieldItemListInterface $items */
57 if (empty($images = $this->getEntitiesToView($items, $langcode))) {
58 // Early opt-out if the field is empty.
62 /** @var \Drupal\image\ImageStyleInterface $image_style */
63 $image_style = $this->imageStyleStorage->load($this->getSetting('image_style'));
64 /** @var \Drupal\file\FileInterface[] $images */
65 foreach ($images as $delta => $image) {
66 $image_uri = $image->getFileUri();
67 $url = $image_style ? $image_style->buildUrl($image_uri) : file_create_url($image_uri);
68 $url = file_url_transform_relative($url);
70 // Add cacheability metadata from the image and image style.
71 $cacheability = CacheableMetadata::createFromObject($image);
73 $cacheability->addCacheableDependency(CacheableMetadata::createFromObject($image_style));
76 $elements[$delta] = ['#markup' => $url];
77 $cacheability->applyTo($elements[$delta]);