3 namespace Drupal\{{ machine_name }}\Plugin\Field\FieldFormatter;
7 use Drupal\Core\Datetime\DrupalDateTime;
9 use Drupal\Core\Field\FieldItemListInterface;
10 use Drupal\Core\Field\FormatterBase;
12 use Drupal\{{ machine_name }}\Plugin\Field\FieldType\{{ type_class }};
17 * Plugin implementation of the '{{ field_id }}_table' formatter.
20 * id = "{{ field_id }}_table",
21 * label = @Translation("Table"),
22 * field_types = {"{{ field_id }}"}
25 class {{ table_formatter_class }} extends FormatterBase {
30 public function viewElements(FieldItemListInterface $items, $langcode) {
33 {% for subfield in subfields %}
34 $header[] = $this->t('{{ subfield.name }}');
42 foreach ($items as $delta => $item) {
45 $row[]['#markup'] = $delta + 1;
47 {% for subfield in subfields %}
48 {% if subfield.type == 'boolean' %}
49 $row[]['#markup'] = $item->{{ subfield.machine_name }} ? $this->t('Yes') : $this->t('No');
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 }}];
60 $formatted_date = $date_formatter->format($timestamp, 'long');
62 $iso_date = $date_formatter->format($timestamp, 'custom', 'Y-m-d\TH:i:s') . 'Z';
65 '#text' => $formatted_date,
68 'datetime' => $iso_date,
78 $row[]['#markup'] = '';
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 }}];
88 $row[]['#markup'] = '';
91 $row[]['#markup'] = $item->{{ subfield.machine_name }};
96 $table[$delta] = $row;