39bff8d87737ed43c087476031cce12475c70eee
[yaffs-website] / web / core / modules / field / tests / modules / field_test / src / Plugin / Field / FieldFormatter / TestFieldPrepareViewFormatter.php
1 <?php
2
3 namespace Drupal\field_test\Plugin\Field\FieldFormatter;
4
5 use Drupal\Core\Field\FormatterBase;
6 use Drupal\Core\Field\FieldItemListInterface;
7 use Drupal\Core\Form\FormStateInterface;
8
9 /**
10  * Plugin implementation of the 'field_test_with_prepare_view' formatter.
11  *
12  * @FieldFormatter(
13  *   id = "field_test_with_prepare_view",
14  *   label = @Translation("With prepare step"),
15  *   description = @Translation("Tests prepareView() method"),
16  *   field_types = {
17  *     "test_field"
18  *   },
19  *   weight = 10
20  * )
21  */
22 class TestFieldPrepareViewFormatter extends FormatterBase {
23
24   /**
25    * {@inheritdoc}
26    */
27   public static function defaultSettings() {
28     return [
29       'test_formatter_setting_additional' => 'dummy test string',
30     ] + parent::defaultSettings();
31   }
32
33   /**
34    * {@inheritdoc}
35    */
36   public function settingsForm(array $form, FormStateInterface $form_state) {
37     $element['test_formatter_setting_additional'] = [
38       '#title' => t('Setting'),
39       '#type' => 'textfield',
40       '#size' => 20,
41       '#default_value' => $this->getSetting('test_formatter_setting_additional'),
42       '#required' => TRUE,
43     ];
44     return $element;
45   }
46
47   /**
48    * {@inheritdoc}
49    */
50   public function settingsSummary() {
51     $summary = [];
52     $summary[] = t('@setting: @value', ['@setting' => 'test_formatter_setting_additional', '@value' => $this->getSetting('test_formatter_setting_additional')]);
53     return $summary;
54   }
55
56   /**
57    * {@inheritdoc}
58    */
59   public function prepareView(array $entities_items) {
60     foreach ($entities_items as $items) {
61       foreach ($items as $item) {
62         // Don't add anything on empty values.
63         if (!$item->isEmpty()) {
64           $item->additional_formatter_value = $item->value + 1;
65         }
66       }
67     }
68   }
69
70   /**
71    * {@inheritdoc}
72    */
73   public function viewElements(FieldItemListInterface $items, $langcode) {
74     $elements = [];
75
76     foreach ($items as $delta => $item) {
77       $elements[$delta] = ['#markup' => $this->getSetting('test_formatter_setting_additional') . '|' . $item->value . '|' . $item->additional_formatter_value];
78     }
79
80     return $elements;
81   }
82
83 }