custom_elements-8.x-2.x-dev/src/Plugin/CustomElementsFieldFormatter/RawCeFieldFormatter.php

src/Plugin/CustomElementsFieldFormatter/RawCeFieldFormatter.php
<?php

namespace Drupal\custom_elements\Plugin\CustomElementsFieldFormatter;

use Drupal\Component\Render\MarkupInterface;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\custom_elements\CustomElement;
use Drupal\custom_elements\CustomElementsFieldFormatterBase;

/**
 * Implementation of the 'raw' custom element formatter plugin.
 *
 * @CustomElementsFieldFormatter(
 *   id = "raw",
 *   label = @Translation("Raw"),
 *   weight = -10
 * )
 */
class RawCeFieldFormatter extends CustomElementsFieldFormatterBase {

  /**
   * {@inheritdoc}
   */
  public function build(FieldItemListInterface $items, CustomElement $custom_element, $langcode = NULL) {
    $values = $this->getFieldItemListValue($items);
    // Make single-value fields flat by default.
    if ($items->getFieldDefinition()->getFieldStorageDefinition()->getCardinality() == 1) {
      $values = reset($values);
    }

    if ($this->isSlot()) {
      $custom_element->addSlot($this->getName(), is_scalar($values) || $values instanceof MarkupInterface ? $values : Json::encode($values));
    }
    else {
      $custom_element->setAttribute($this->getName(), $values);
    }
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    // Nothing needed.
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
    // Nothing needed.
  }

  /**
   * Returns value for the given field.
   *
   * This is a separate method, for easier extension by child classes.
   *
   * @param \Drupal\Core\Field\FieldItemListInterface $items
   *   The field to process.
   *
   * @return array
   *   The field's value(s).
   */
  protected function getFieldItemListValue(FieldItemListInterface $items): array {
    return $items->getValue();
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc