6351643c7d668555b907875e3cde40b7ce44cea3
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / _field / table-formatter.twig
1 <?php
2
3 namespace Drupal\{{ machine_name }}\Plugin\Field\FieldFormatter;
4
5 {% sort %}
6   {% if datetime %}
7 use Drupal\Core\Datetime\DrupalDateTime;
8   {% endif %}
9 use Drupal\Core\Field\FieldItemListInterface;
10 use Drupal\Core\Field\FormatterBase;
11   {% if list %}
12 use Drupal\{{ machine_name }}\Plugin\Field\FieldType\{{ type_class }};
13   {% endif %}
14 {% endsort %}
15
16 /**
17  * Plugin implementation of the '{{ field_id }}_table' formatter.
18  *
19  * @FieldFormatter(
20  *   id = "{{ field_id }}_table",
21  *   label = @Translation("Table"),
22  *   field_types = {"{{ field_id }}"}
23  * )
24  */
25 class {{ table_formatter_class }} extends FormatterBase {
26
27   /**
28    * {@inheritdoc}
29    */
30   public function viewElements(FieldItemListInterface $items, $langcode) {
31
32     $header[] = '#';
33 {% for subfield in subfields %}
34     $header[] = $this->t('{{ subfield.name }}');
35 {% endfor %}
36
37     $table = [
38       '#type' => 'table',
39       '#header' => $header,
40     ];
41
42     foreach ($items as $delta => $item) {
43       $row = [];
44
45       $row[]['#markup'] = $delta + 1;
46
47 {% for subfield in subfields %}
48   {% if subfield.type == 'boolean' %}
49       $row[]['#markup'] = $item->{{ subfield.machine_name }} ? $this->t('Yes') : $this->t('No');
50
51   {% elseif subfield.type == 'datetime' %}
52       if ($item->{{ subfield.machine_name }}) {
53         $date = DrupalDateTime::createFromFormat('{{ subfield.date_storage_format }}', $item->{{ subfield.machine_name }});
54         $date_formatter = \Drupal::service('date.formatter');
55         $timestamp = $date->getTimestamp();
56     {% if subfield.list %}
57         $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}();
58         $formatted_date = $allowed_values[$item->{{ subfield.machine_name }}];
59     {% else %}
60         $formatted_date = $date_formatter->format($timestamp, 'long');
61     {% endif %}
62         $iso_date = $date_formatter->format($timestamp, 'custom', 'Y-m-d\TH:i:s') . 'Z';
63         $row[] = [
64           '#theme' => 'time',
65           '#text' => $formatted_date,
66           '#html' => FALSE,
67           '#attributes' => [
68             'datetime' => $iso_date,
69           ],
70           '#cache' => [
71             'contexts' => [
72               'timezone',
73             ],
74           ],
75         ];
76       }
77       else {
78         $row[]['#markup'] = '';
79       }
80
81   {% else %}
82     {% if subfield.list %}
83       if ($item->{{ subfield.machine_name }}) {
84         $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}();
85         $row[]['#markup'] = $allowed_values[$item->{{ subfield.machine_name }}];
86       }
87       else {
88         $row[]['#markup'] = '';
89       }
90     {% else %}
91       $row[]['#markup'] = $item->{{ subfield.machine_name }};
92     {% endif %}
93
94   {% endif %}
95 {% endfor %}
96       $table[$delta] = $row;
97     }
98
99     return [$table];
100   }
101
102 }