3 namespace Drupal\field_test\Plugin\Field\FieldFormatter;
5 use Drupal\Core\Field\FormatterBase;
6 use Drupal\Core\Field\FieldItemListInterface;
7 use Drupal\Core\Form\FormStateInterface;
10 * Plugin implementation of the 'field_test_with_prepare_view' formatter.
13 * id = "field_test_with_prepare_view",
14 * label = @Translation("With prepare step"),
15 * description = @Translation("Tests prepareView() method"),
22 class TestFieldPrepareViewFormatter extends FormatterBase {
27 public static function defaultSettings() {
29 'test_formatter_setting_additional' => 'dummy test string',
30 ] + parent::defaultSettings();
36 public function settingsForm(array $form, FormStateInterface $form_state) {
37 $element['test_formatter_setting_additional'] = [
38 '#title' => t('Setting'),
39 '#type' => 'textfield',
41 '#default_value' => $this->getSetting('test_formatter_setting_additional'),
50 public function settingsSummary() {
52 $summary[] = t('@setting: @value', ['@setting' => 'test_formatter_setting_additional', '@value' => $this->getSetting('test_formatter_setting_additional')]);
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;
73 public function viewElements(FieldItemListInterface $items, $langcode) {
76 foreach ($items as $delta => $item) {
77 $elements[$delta] = ['#markup' => $this->getSetting('test_formatter_setting_additional') . '|' . $item->value . '|' . $item->additional_formatter_value];