t('{{ subfield.name }}'); {% endfor %} $table = [ '#type' => 'table', '#header' => $header, ]; foreach ($items as $delta => $item) { $row = []; $row[]['#markup'] = $delta + 1; {% for subfield in subfields %} {% if subfield.type == 'boolean' %} $row[]['#markup'] = $item->{{ subfield.machine_name }} ? $this->t('Yes') : $this->t('No'); {% elseif subfield.type == 'datetime' %} if ($item->{{ subfield.machine_name }}) { $date = DrupalDateTime::createFromFormat('{{ subfield.date_storage_format }}', $item->{{ subfield.machine_name }}); $date_formatter = \Drupal::service('date.formatter'); $timestamp = $date->getTimestamp(); {% if subfield.list %} $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}(); $formatted_date = $allowed_values[$item->{{ subfield.machine_name }}]; {% else %} $formatted_date = $date_formatter->format($timestamp, 'long'); {% endif %} $iso_date = $date_formatter->format($timestamp, 'custom', 'Y-m-d\TH:i:s') . 'Z'; $row[] = [ '#theme' => 'time', '#text' => $formatted_date, '#html' => FALSE, '#attributes' => [ 'datetime' => $iso_date, ], '#cache' => [ 'contexts' => [ 'timezone', ], ], ]; } else { $row[]['#markup'] = ''; } {% else %} {% if subfield.list %} if ($item->{{ subfield.machine_name }}) { $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}(); $row[]['#markup'] = $allowed_values[$item->{{ subfield.machine_name }}]; } else { $row[]['#markup'] = ''; } {% else %} $row[]['#markup'] = $item->{{ subfield.machine_name }}; {% endif %} {% endif %} {% endfor %} $table[$delta] = $row; } return [$table]; } }