Pull merge.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / _field / key-value-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 }}_key_value' formatter.
18  *
19  * @FieldFormatter(
20  *   id = "{{ field_id }}_key_value",
21  *   label = @Translation("Key-value"),
22  *   field_types = {"{{ field_id }}"}
23  * )
24  */
25 class {{ key_value_formatter_class }} extends FormatterBase {
26
27   /**
28    * {@inheritdoc}
29    */
30   public function viewElements(FieldItemListInterface $items, $langcode) {
31
32     $element = [];
33
34     foreach ($items as $delta => $item) {
35
36       $table = [
37         '#type' => 'table',
38       ];
39
40 {% for subfield in subfields %}
41       // {{ subfield.name }}.
42       if ($item->{{ subfield.machine_name }}) {
43   {% if subfield.type == 'datetime' %}
44         $date = DrupalDateTime::createFromFormat('{{ subfield.date_storage_format }}', $item->{{ subfield.machine_name }});
45         $date_formatter = \Drupal::service('date.formatter');
46         $timestamp = $date->getTimestamp();
47     {% if subfield.list %}
48         $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}();
49         $formatted_date = $allowed_values[$item->{{ subfield.machine_name }}];
50     {% else %}
51         $formatted_date = $date_formatter->format($timestamp, 'long');
52     {% endif %}
53         $iso_date = $date_formatter->format($timestamp, 'custom', 'Y-m-d\TH:i:s') . 'Z';
54
55   {% elseif subfield.list %}
56         $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}();
57
58   {% endif %}
59         $table['#rows'][] = [
60           'data' => [
61             [
62               'header' => TRUE,
63               'data' => [
64                 '#markup' => $this->t('{{ subfield.name }}'),
65               ],
66             ],
67             [
68               'data' => [
69   {% if subfield.type == 'boolean' %}
70                 '#markup' => $item->{{ subfield.machine_name }} ? $this->t('Yes') : $this->t('No'),
71   {% elseif subfield.type == 'datetime' %}
72                 '#theme' => 'time',
73                 '#text' => $formatted_date,
74                 '#html' => FALSE,
75                 '#attributes' => [
76                   'datetime' => $iso_date,
77                 ],
78                 '#cache' => [
79                   'contexts' => [
80                     'timezone',
81                   ],
82                 ],
83   {% else %}
84     {% if subfield.list %}
85                 '#markup' => $allowed_values[$item->{{ subfield.machine_name }}],
86     {% else %}
87                 '#markup' => $item->{{ subfield.machine_name }},
88     {% endif %}
89   {% endif %}
90               ],
91             ],
92           ],
93           'no_striping' => TRUE,
94         ];
95       }
96
97 {% endfor %}
98       $element[$delta] = $table;
99
100     }
101
102     return $element;
103   }
104
105 }