function TableFormatter::viewElements

Same name in other branches
  1. 9 core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php \Drupal\file\Plugin\Field\FieldFormatter\TableFormatter::viewElements()
  2. 10 core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php \Drupal\file\Plugin\Field\FieldFormatter\TableFormatter::viewElements()
  3. 11.x core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php \Drupal\file\Plugin\Field\FieldFormatter\TableFormatter::viewElements()

Overrides FormatterInterface::viewElements

File

core/modules/file/src/Plugin/Field/FieldFormatter/TableFormatter.php, line 23

Class

TableFormatter
Plugin implementation of the 'file_table' formatter.

Namespace

Drupal\file\Plugin\Field\FieldFormatter

Code

public function viewElements(FieldItemListInterface $items, $langcode) {
    $elements = [];
    if ($files = $this->getEntitiesToView($items, $langcode)) {
        $header = [
            t('Attachment'),
            t('Size'),
        ];
        $rows = [];
        foreach ($files as $delta => $file) {
            $item = $file->_referringItem;
            $rows[] = [
                [
                    'data' => [
                        '#theme' => 'file_link',
                        '#file' => $file,
                        '#description' => $this->getSetting('use_description_as_link_text') ? $item->description : NULL,
                        '#cache' => [
                            'tags' => $file->getCacheTags(),
                        ],
                    ],
                ],
                [
                    'data' => format_size($file->getSize()),
                ],
            ];
        }
        $elements[0] = [];
        if (!empty($rows)) {
            $elements[0] = [
                '#theme' => 'table__file_formatter_table',
                '#header' => $header,
                '#rows' => $rows,
            ];
        }
    }
    return $elements;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.