association-1.0.0-alpha2/src/Plugin/Field/FieldType/AssociationBundlePluginSettings.php

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

namespace Drupal\association\Plugin\Field\FieldType;

use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\Core\TypedData\MapDataDefinition;

/**
 * Provides configuration storage for an association bundle plugin.
 *
 * This provides storage for plugin configurations. These settings can be
 * different per association entity, but the plugin type is initialized and
 * available from the association bundle.
 *
 * @FieldType(
 *   id = "association_plugin_settings",
 *   label = @Translation("Association plugin settings"),
 *   module = "association",
 *   description = @Translation("Association settings for an association bundle plugin."),
 *   default_widget = "association_plugin_settings_widget",
 *   cardinality = 1,
 *   no_ui = TRUE,
 * )
 */
class AssociationBundlePluginSettings extends FieldItemBase {

  /**
   * {@inheritdoc}
   */
  public static function mainPropertyName(): ?string {
    return 'settings';
  }

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

    $properties['plugin'] = DataDefinition::create('string')
      ->setLabel(t('Plugin ID'))
      ->setRequired(TRUE)
      ->setDescription(t('The identifier of the plugin these configurations were stored for.'));

    $properties['settings'] = MapDataDefinition::create('map')
      ->setLabel(t('Landing page settings'))
      ->setDescription(t('The association landing page handler plugin settings.'));

    return $properties;
  }

  /**
   * {@inheritdoc}
   */
  public static function schema(FieldStorageDefinitionInterface $field_definition): array {
    return [
      'columns' => [
        'plugin' => [
          'type' => 'varchar_ascii',
          'length' => 128,
          'not null' => TRUE,
          'description' => 'The plugin identifier.',
        ],
        'settings' => [
          'type' => 'blob',
          'serialize' => TRUE,
          'description' => 'Serialized plugin settings.',
        ],
      ],
    ];
  }

}

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

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