Version 1
[yaffs-website] / web / core / modules / file / src / Plugin / Field / FieldFormatter / TableFormatter.php
1 <?php
2
3 namespace Drupal\file\Plugin\Field\FieldFormatter;
4
5 use Drupal\Core\Field\FieldItemListInterface;
6
7 /**
8  * Plugin implementation of the 'file_table' formatter.
9  *
10  * @FieldFormatter(
11  *   id = "file_table",
12  *   label = @Translation("Table of files"),
13  *   field_types = {
14  *     "file"
15  *   }
16  * )
17  */
18 class TableFormatter extends FileFormatterBase {
19
20   /**
21    * {@inheritdoc}
22    */
23   public function viewElements(FieldItemListInterface $items, $langcode) {
24     $elements = [];
25
26     if ($files = $this->getEntitiesToView($items, $langcode)) {
27       $header = [t('Attachment'), t('Size')];
28       $rows = [];
29       foreach ($files as $delta => $file) {
30         $rows[] = [
31           [
32             'data' => [
33               '#theme' => 'file_link',
34               '#file' => $file,
35               '#cache' => [
36                 'tags' => $file->getCacheTags(),
37               ],
38             ],
39           ],
40           ['data' => format_size($file->getSize())],
41         ];
42       }
43
44       $elements[0] = [];
45       if (!empty($rows)) {
46         $elements[0] = [
47           '#theme' => 'table__file_formatter_table',
48           '#header' => $header,
49           '#rows' => $rows,
50         ];
51       }
52     }
53
54     return $elements;
55   }
56
57 }