You are here

public function CodemirrorEditorFormatter::viewElements in The CodeMirror Editor 8

Builds a renderable array for a field value.

Parameters

\Drupal\Core\Field\FieldItemListInterface $items: The field values to be rendered.

string $langcode: The language that should be used to render the field.

Return value

array A renderable array for $items, as an array of child elements keyed by consecutive numeric indexes starting from 0.

Overrides FormatterInterface::viewElements

File

src/Plugin/Field/FieldFormatter/CodemirrorEditorFormatter.php, line 61

Class

CodemirrorEditorFormatter
Plugin implementation of the 'Codemirror' formatter.

Namespace

Drupal\codemirror_editor\Plugin\Field\FieldFormatter

Code

public function viewElements(FieldItemListInterface $items, $langcode) {
  $element = [];
  $settings = $this
    ->getSettings();
  $settings['mode'] = self::normalizeMode($settings['mode']);
  $settings['readOnly'] = TRUE;
  $settings['toolbar'] = FALSE;
  foreach ($items as $delta => $item) {
    $element[$delta]['#markup'] = new FormattableMarkup('<code data-codemirror="@codemirror" class="cme-code">@value</code>', [
      '@codemirror' => json_encode($settings),
      '@value' => "\n{$item->value}\n",
    ]);
  }
  $element['#attached']['library'][] = 'codemirror_editor/formatter';
  return $element;
}