contacts_events-8.x-1.x-dev/modules/villages/src/Plugin/VillageGroupTypeBase.php

modules/villages/src/Plugin/VillageGroupTypeBase.php
<?php

namespace Drupal\contacts_events_villages\Plugin;

use Drupal\Component\Plugin\PluginBase;
use Drupal\contacts_events_villages\Entity\VillageGroupInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Field\EntityReferenceFieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\entity\BundleFieldDefinition;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Base class for Village group type plugins.
 */
abstract class VillageGroupTypeBase extends PluginBase implements VillageGroupTypeInterface, ContainerFactoryPluginInterface {

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition,
      $container->get('entity_type.manager')
    );
  }

  /**
   * Constructs a VillageGroupTypeBase object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
  }

  /**
   * {@inheritdoc}
   */
  public function buildFieldDefinitions() {
    $fields = [];

    // Add description field for expanded group types.
    if ($this->isExpanded()) {
      $fields['description'] = BundleFieldDefinition::create('string')
        ->setTranslatable(TRUE)
        ->setLabel(new TranslatableMarkup('Description'))
        ->setDescription(new TranslatableMarkup('A description of the village group.'))
        ->setDisplayOptions('form', [
          'type' => 'string_textfield',
          'weight' => -1,
        ])
        ->setDisplayConfigurable('form', TRUE)
        ->setDisplayOptions('view', [
          'type' => 'string',
          'label' => 'above',
          'weight' => -1,
        ])
        ->setDisplayConfigurable('view', TRUE);
    }

    return $fields;
  }

  /**
   * {@inheritdoc}
   */
  public function isExpanded() : bool {
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function form(EntityReferenceFieldItemListInterface $items) {
    return [];
  }

  /**
   * {@inheritdoc}
   */
  public function buildFormEntity(array $values, VillageGroupInterface $group) : VillageGroupInterface {
    // Set any fields on the group that have been provided.
    if (!empty($values)) {
      foreach ($values as $field_name => $field_value) {
        if ($group->hasField($field_name)) {
          $group->set($field_name, $field_value);
        }
      }
    }
    return $group;
  }

  /**
   * {@inheritdoc}
   */
  abstract public function getExisting(VillageGroupInterface $group) : VillageGroupInterface;

  /**
   * {@inheritdoc}
   */
  public function validate(array &$element, FormStateInterface $form_state, array &$complete_form) {
    // Default implementation is no-op.
  }

  /**
   * {@inheritdoc}
   */
  public function process(array &$subform, FormStateInterface $form_state, array &$complete_form, $path_to_containing_widget) {
    // Default implementation is no-op.
  }

}

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

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