rocketship_core-8.x-2.0-alpha11/src/Plugin/Field/FieldFormatter/HeaderTextFieldFormatter.php
src/Plugin/Field/FieldFormatter/HeaderTextFieldFormatter.php
<?php
namespace Drupal\rocketship_core\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Form\FormStateInterface;
/**
* Plugin implementation of the 'header_text_field_formatter' formatter.
*
* @FieldFormatter(
* id = "header_text_field_formatter",
* label = @Translation("Header text"),
* field_types = {
* "string",
* "string_long",
* }
* )
*/
class HeaderTextFieldFormatter extends FormatterBase {
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
return [
'header' => 'h2',
] + parent::defaultSettings();
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) {
$setting['header'] = [
'#type' => 'select',
'#title' => t('Header tag'),
'#options' => $this->getOptions(),
'#default_value' => $this->getSetting('header'),
'#description' => t('Define the header tag element that will be wrapped around this field.'),
];
return $setting + parent::settingsForm($form, $form_state);
}
/**
* Get the options.
*
* @return array
* The options.
*/
protected function getOptions() {
return [
'h1' => 'h1',
'h2' => 'h2',
'h3' => 'h3',
'h4' => 'h4',
'h5' => 'h5',
];
}
/**
* {@inheritdoc}
*/
public function settingsSummary() {
$summary = [];
$summary[] = t('Header element: @header', ['@header' => $this->getSetting('header')]);
return $summary;
}
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
// The ProcessedText element already handles cache context & tag bubbling.
// @see \Drupal\filter\Element\ProcessedText::preRenderText()
foreach ($items as $delta => $item) {
$tag = $this->getSetting('header');
// $value = '<' . $tag . '>' . $item->value . '</' . $tag . '>';.
$elements[$delta] = [
'#prefix' => '<' . $tag . '>',
'#suffix' => '</' . $tag . '>',
'#type' => 'inline_template',
'#template' => '{{ value|nl2br }}',
'#context' => ['value' => $item->value],
];
}
return $elements;
}
}
