bm-1.0.x-dev/src/Plugin/Field/FieldType/BookButtonItem.php
src/Plugin/Field/FieldType/BookButtonItem.php
<?php
declare(strict_types=1);
namespace Drupal\bm\Plugin\Field\FieldType;
use Drupal\Component\Utility\Random;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\TypedData\DataDefinition;
/**
* Defines the 'bm_book_button' field type.
*
* @FieldType(
* id = "bm_book_button",
* label = @Translation("Book Button"),
* description = @Translation("Some description."),
* default_formatter = "bm_book_button_default",
* )
*/
final class BookButtonItem extends FieldItemBase {
/**
* {@inheritdoc}
*/
public static function defaultFieldSettings(): array {
$settings = ['label' => 'book'];
return $settings + parent::defaultFieldSettings();
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition): array {
$properties['value_1'] = DataDefinition::create('string')
->setLabel(t('Value 1'));
return $properties;
}
/**
* {@inheritdoc}
*/
public function getConstraints(): array {
$constraints = parent::getConstraints();
$options['value_1']['AllowedValues'] = [];
$constraint_manager = \Drupal::typedDataManager()->getValidationConstraintManager();
$constraints[] = $constraint_manager->create('ComplexData', $options);
// @todo Add more constraints here.
return $constraints;
}
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition): array {
$columns = [
'value_1' => [
'type' => 'varchar',
'length' => 255,
],
];
$schema = [
'columns' => $columns,
// @DCG Add indexes here if necessary.
];
return $schema;
}
}
