You are here

class ExampleMultilingualField in Extra Field 8

Same name and namespace in other branches
  1. 8.2 modules/extra_field_example/src/Plugin/ExtraField/Display/ExampleMultilingualField.php \Drupal\extra_field_example\Plugin\ExtraField\Display\ExampleMultilingualField

Example Extra field Display.

Plugin annotation


@ExtraFieldDisplay(
  id = "multilingual_field",
  label = @Translation("Concatenated tags"),
  bundles = {
    "node.article"
  }
)

Hierarchy

Expanded class hierarchy of ExampleMultilingualField

File

modules/extra_field_example/src/Plugin/ExtraField/Display/ExampleMultilingualField.php, line 20

Namespace

Drupal\extra_field_example\Plugin\ExtraField\Display
View source
class ExampleMultilingualField extends ExtraFieldDisplayFormattedBase {

  /**
   * {@inheritdoc}
   */
  public function viewElements(ContentEntityInterface $entity) {
    $elements = [];
    $cache = new CacheableMetadata();
    $tagsField = $this
      ->getTagsField();
    if ($tagsField && !$tagsField
      ->isEmpty()) {

      // Build the field output as a concatenated string of tags.
      $tags = [];
      foreach ($tagsField as $item) {

        /** @var \Drupal\Core\Entity\ContentEntityInterface $tag */
        $tag = $item->entity;
        $tags[] = $tag
          ->label();
        $cache
          ->addCacheableDependency($tag);
      }
      $elements = [
        '#markup' => implode(', ', $tags),
      ];
    }
    else {

      // Mark the result as empty to make sure no field wrapper is applied.
      $this->isEmpty = TRUE;
    }
    $cache
      ->applyTo($elements);
    return $elements;
  }

  /**
   * {@inheritdoc}
   */
  public function getLabel() {
    $label = '';
    if ($tagsField = $this
      ->getTagsField()) {

      // Use the Tags field's label.
      $label = $tagsField
        ->getFieldDefinition()
        ->getLabel();
    }
    return $label;
  }

  /**
   * {@inheritdoc}
   */
  public function getLabelDisplay() {

    // Override the default label display setting.
    return 'inline';
  }

  /**
   * {@inheritdoc}
   */
  public function isTranslatable() {

    // Override the default translatability setting.
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public function getLangcode() {
    if ($tagsField = $this
      ->getTagsField()) {
      $langcode = $tagsField
        ->getLangcode();
    }
    else {
      $langcode = parent::getLangcode();
    }
    return $langcode;
  }

  /**
   * Returns the Tags field this plugin uses.
   *
   * @return \Drupal\Core\Field\FieldItemListInterface|null
   *   The taxonomy terms this field references.
   */
  protected function getTagsField() {
    $field = NULL;
    $entity = $this
      ->getEntity();
    if ($entity
      ->hasField('field_tags')) {
      $field = $entity
        ->get('field_tags');
    }
    return $field;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ExampleMultilingualField::getLabel public function The label of the field. Overrides ExtraFieldDisplayFormattedBase::getLabel
ExampleMultilingualField::getLabelDisplay public function How to display the field label will be displayed. Overrides ExtraFieldDisplayFormattedBase::getLabelDisplay
ExampleMultilingualField::getLangcode public function Gets the langcode of the field values. Overrides ExtraFieldDisplayFormattedBase::getLangcode
ExampleMultilingualField::getTagsField protected function Returns the Tags field this plugin uses.
ExampleMultilingualField::isTranslatable public function The field is translatable. Overrides ExtraFieldDisplayFormattedBase::isTranslatable
ExampleMultilingualField::viewElements public function Returns the renderable array of the field item(s). Overrides ExtraFieldDisplayFormattedInterface::viewElements
ExtraFieldDisplayBase::$entity protected property The field's parent entity.
ExtraFieldDisplayBase::$entityViewDisplay protected property The entity view display.
ExtraFieldDisplayBase::$viewMode protected property The view mode the entity is rendered in.
ExtraFieldDisplayBase::getEntity public function Returns the field's parent entity. Overrides ExtraFieldDisplayInterface::getEntity
ExtraFieldDisplayBase::getEntityViewDisplay public function Returns the entity view display object of the field's host entity. Overrides ExtraFieldDisplayInterface::getEntityViewDisplay
ExtraFieldDisplayBase::getViewMode public function Returns the entity view mode object of the field's host entity. Overrides ExtraFieldDisplayInterface::getViewMode
ExtraFieldDisplayBase::setEntity public function Stores the field's parent entity. Overrides ExtraFieldDisplayInterface::setEntity
ExtraFieldDisplayBase::setEntityViewDisplay public function Stores the entity view display. Overrides ExtraFieldDisplayInterface::setEntityViewDisplay
ExtraFieldDisplayBase::setViewMode public function Stores the entity view mode. Overrides ExtraFieldDisplayInterface::setViewMode
ExtraFieldDisplayFormattedBase::$isEmpty protected property Flag to indicate that the extra field has no content.
ExtraFieldDisplayFormattedBase::$langcode protected property The langcode of the field values.
ExtraFieldDisplayFormattedBase::$languageManager protected property The language manager.
ExtraFieldDisplayFormattedBase::getFieldName public function The machine name of the field. Overrides ExtraFieldDisplayFormattedInterface::getFieldName 1
ExtraFieldDisplayFormattedBase::getFieldType public function The type of field. Overrides ExtraFieldDisplayFormattedInterface::getFieldType 1
ExtraFieldDisplayFormattedBase::isEmpty public function Check if the extra field has data. Overrides ExtraFieldDisplayFormattedInterface::isEmpty
ExtraFieldDisplayFormattedBase::setLangcode public function
ExtraFieldDisplayFormattedBase::view public function Builds a renderable array for the field. Overrides ExtraFieldDisplayInterface::view
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92