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;
11 {% if formatter_settings %}
12 use Drupal\Core\Form\FormStateInterface;
18 use Drupal\{{ machine_name }}\Plugin\Field\FieldType\{{ type_class }};
23 * Plugin implementation of the '{{ field_id }}_default' formatter.
26 * id = "{{ field_id }}_default",
27 * label = @Translation("Default"),
28 * field_types = {"{{ field_id }}"}
31 class {{ formatter_class }} extends FormatterBase {
33 {% if formatter_settings %}
37 public static function defaultSettings() {
38 return ['foo' => 'bar'] + parent::defaultSettings();
44 public function settingsForm(array $form, FormStateInterface $form_state) {
45 $settings = $this->getSettings();
47 '#type' => 'textfield',
48 '#title' => $this->t('Foo'),
49 '#default_value' => $settings['foo'],
57 public function settingsSummary() {
58 $settings = $this->getSettings();
59 $summary[] = $this->t('Foo: @foo', ['@foo' => $settings['foo']]);
67 public function viewElements(FieldItemListInterface $items, $langcode) {
70 foreach ($items as $delta => $item) {
72 {% for subfield in subfields %}
73 {% if subfield.type == 'boolean' %}
74 $element[$delta]['{{ subfield.machine_name }}'] = [
76 '#title' => $this->t('{{ subfield.name }}'),
77 '#markup' => $item->{{ subfield.machine_name }} ? $this->t('Yes') : $this->t('No'),
81 if ($item->{{ subfield.machine_name }}) {
82 {% if subfield.list %}
83 $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}();
86 {% if subfield.list %}$allowed_values[$item->{{ subfield.machine_name }}]{% else %}$item->{{ subfield.machine_name }}{% endif %}
88 {% if subfield.type == 'datetime' %}
89 $date = DrupalDateTime::createFromFormat('{{ subfield.date_storage_format }}', $item->{{ subfield.machine_name }});
90 // @DCG: Consider injecting the date formatter service.
91 // @codingStandardsIgnoreStart
92 $date_formatter = \Drupal::service('date.formatter');
93 // @codingStandardsIgnoreStart
94 $timestamp = $date->getTimestamp();
95 {% if subfield.list %}
96 $formatted_date = {{ item_value }};
98 $formatted_date = $date_formatter->format($timestamp, 'long');
100 $iso_date = $date_formatter->format($timestamp, 'custom', 'Y-m-d\TH:i:s') . 'Z';
101 $element[$delta]['{{ subfield.machine_name }}'] = [
103 '#title' => $this->t('{{ subfield.name }}'),
106 '#text' => $formatted_date,
109 'datetime' => $iso_date,
119 $element[$delta]['{{ subfield.machine_name }}'] = [
121 '#title' => $this->t('{{ subfield.name }}'),
122 {% if subfield.link %}
125 '#title' => {{ item_value }},
126 {% if subfield.type == 'email' %}
127 '#url' => Url::fromUri('mailto:' . $item->{{ subfield.machine_name }}),
128 {% elseif subfield.type == 'telephone' %}
129 '#url' => Url::fromUri('tel:' . rawurlencode(preg_replace('/\s+/', '', $item->{{ subfield.machine_name }}))),
130 {% elseif subfield.type == 'uri' %}
131 '#url' => Url::fromUri($item->{{ subfield.machine_name }}),
135 '#markup' => {{ item_value }},