entity_meta_relation-8.x-1.0-beta8/src/Plugin/Field/FieldType/BaseEntityMetaRelationItem.php

src/Plugin/Field/FieldType/BaseEntityMetaRelationItem.php
<?php

declare(strict_types=1);

namespace Drupal\emr\Plugin\Field\FieldType;

use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\Field\Plugin\Field\FieldType\MapItem;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataReferenceDefinition;

/**
 * Base class for EntityMeta item field types.
 */
class BaseEntityMetaRelationItem extends MapItem {

  /**
   * {@inheritdoc}
   */
  public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
    $properties = [];

    $properties['entity'] = DataReferenceDefinition::create('entity')
      ->setLabel('The entity')
      ->setDescription(new TranslatableMarkup('The referenced entity'))
      ->setComputed(TRUE)
      ->setReadOnly(FALSE);

    return $properties;
  }

  /**
   * {@inheritdoc}
   */
  public static function schema(FieldStorageDefinitionInterface $field_definition) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function setValue($values, $notify = TRUE) {
    $this->values = [];
    if (!isset($values)) {
      return;
    }

    if (!is_array($values) && $values instanceof BaseEntityMetaRelationItem) {
      $values = $values->getValue();
    }

    if (!$values instanceof ContentEntityInterface) {
      return;
    }

    $this->values['entity'] = $values;

    // Notify the parent of any changes.
    if ($notify && isset($this->parent)) {
      $this->parent->onChange($this->name);
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function mainPropertyName() {
    return 'entity';
  }

}

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

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