Version 1
[yaffs-website] / web / core / modules / field / tests / modules / field_test / src / Plugin / Field / FieldFormatter / TestFieldDefaultFormatter.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_default' formatter.
11  *
12  * @FieldFormatter(
13  *   id = "field_test_default",
14  *   label = @Translation("Default"),
15  *   description = @Translation("Default formatter"),
16  *   field_types = {
17  *     "test_field",
18  *     "test_field_with_preconfigured_options"
19  *   },
20  *   weight = 1
21  * )
22  */
23 class TestFieldDefaultFormatter extends FormatterBase {
24
25   /**
26    * {@inheritdoc}
27    */
28   public static function defaultSettings() {
29     return [
30       'test_formatter_setting' => 'dummy test string',
31     ] + parent::defaultSettings();
32   }
33
34   /**
35    * {@inheritdoc}
36    */
37   public function settingsForm(array $form, FormStateInterface $form_state) {
38     $element['test_formatter_setting'] = [
39       '#title' => t('Setting'),
40       '#type' => 'textfield',
41       '#size' => 20,
42       '#default_value' => $this->getSetting('test_formatter_setting'),
43       '#required' => TRUE,
44     ];
45     return $element;
46   }
47
48   /**
49    * {@inheritdoc}
50    */
51   public function settingsSummary() {
52     $summary = [];
53     $summary[] = t('@setting: @value', ['@setting' => 'test_formatter_setting', '@value' => $this->getSetting('test_formatter_setting')]);
54     return $summary;
55   }
56
57   /**
58    * {@inheritdoc}
59    */
60   public function viewElements(FieldItemListInterface $items, $langcode) {
61     $elements = [];
62
63     foreach ($items as $delta => $item) {
64       $elements[$delta] = ['#markup' => $this->getSetting('test_formatter_setting') . '|' . $item->value];
65     }
66
67     return $elements;
68   }
69
70 }