3 namespace Drupal\options\Plugin\Field\FieldFormatter;
5 use Drupal\Core\Field\AllowedTagsXssTrait;
6 use Drupal\Core\Field\FieldFilteredMarkup;
7 use Drupal\Core\Field\FormatterBase;
8 use Drupal\Core\Field\FieldItemListInterface;
9 use Drupal\Core\Form\OptGroup;
12 * Plugin implementation of the 'list_default' formatter.
15 * id = "list_default",
16 * label = @Translation("Default"),
24 class OptionsDefaultFormatter extends FormatterBase {
26 use AllowedTagsXssTrait;
31 public function viewElements(FieldItemListInterface $items, $langcode) {
34 // Only collect allowed options if there are actually items to display.
35 if ($items->count()) {
36 $provider = $items->getFieldDefinition()
37 ->getFieldStorageDefinition()
38 ->getOptionsProvider('value', $items->getEntity());
39 // Flatten the possible options, to support opt groups.
40 $options = OptGroup::flattenOptions($provider->getPossibleOptions());
42 foreach ($items as $delta => $item) {
43 $value = $item->value;
44 // If the stored value is in the current set of allowed values, display
45 // the associated label, otherwise just display the raw value.
46 $output = isset($options[$value]) ? $options[$value] : $value;
49 '#allowed_tags' => FieldFilteredMarkup::allowedTags(),