custom_field-1.0.x-dev/src/Plugin/CustomField/FieldType/BooleanType.php
src/Plugin/CustomField/FieldType/BooleanType.php
<?php
declare(strict_types=1);
namespace Drupal\custom_field\Plugin\CustomField\FieldType;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\custom_field\Attribute\CustomFieldType;
use Drupal\custom_field\Plugin\CustomFieldTypeBase;
use Drupal\custom_field\Plugin\CustomFieldTypeInterface;
/**
* Plugin implementation of the 'boolean' field type.
*/
#[CustomFieldType(
id: 'boolean',
label: new TranslatableMarkup('Boolean'),
description: new TranslatableMarkup('Field to store a true or false value.'),
category: new TranslatableMarkup('General'),
default_widget: 'checkbox',
default_formatter: 'boolean',
never_check_empty: TRUE,
)]
class BooleanType extends CustomFieldTypeBase {
/**
* {@inheritdoc}
*/
public static function schema(array $settings): array {
['name' => $name] = $settings;
$columns[$name] = [
'type' => 'int',
'size' => 'tiny',
];
return $columns;
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(array $settings): array {
['name' => $name] = $settings;
$properties[$name] = DataDefinition::create('boolean')
->setLabel(new TranslatableMarkup('@name', ['@name' => $name]))
->setRequired(FALSE);
return $properties;
}
/**
* {@inheritdoc}
*/
public static function generateSampleValue(CustomFieldTypeInterface $field, string $target_entity_type): int {
return mt_rand(0, 1);
}
}
