3 namespace Drupal\field_test\Plugin\Field\FieldType;
5 use Drupal\Core\Field\FieldStorageDefinitionInterface;
6 use Drupal\Core\Form\FormStateInterface;
7 use Drupal\Core\TypedData\DataDefinition;
8 use Drupal\Core\Field\FieldItemBase;
11 * Defines the 'test_field' entity field item.
15 * label = @Translation("Test field"),
16 * description = @Translation("Dummy field type used for tests."),
17 * default_widget = "test_field_widget",
18 * default_formatter = "field_test_default"
21 class TestItem extends FieldItemBase {
26 public static function defaultStorageSettings() {
28 'test_field_storage_setting' => 'dummy test string',
29 'changeable' => 'a changeable field storage setting',
30 'unchangeable' => 'an unchangeable field storage setting',
31 'translatable_storage_setting' => 'a translatable field storage setting',
32 ] + parent::defaultStorageSettings();
38 public static function defaultFieldSettings() {
40 'test_field_setting' => 'dummy test string',
41 'translatable_field_setting' => 'a translatable field setting',
42 ] + parent::defaultFieldSettings();
48 public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
49 $properties['value'] = DataDefinition::create('integer')
50 ->setLabel(t('Test integer value'))
59 public static function schema(FieldStorageDefinitionInterface $field_definition) {
76 public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
77 $form['test_field_storage_setting'] = [
78 '#type' => 'textfield',
79 '#title' => t('Field test field storage setting'),
80 '#default_value' => $this->getSetting('test_field_storage_setting'),
82 '#description' => t('A dummy form element to simulate field storage setting.'),
91 public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
92 $form['test_field_setting'] = [
93 '#type' => 'textfield',
94 '#title' => t('Field test field setting'),
95 '#default_value' => $this->getSetting('test_field_setting'),
97 '#description' => t('A dummy form element to simulate field setting.'),
106 public function delete() {
107 // Reports that delete() method is executed for testing purposes.
108 field_test_memorize('field_test_field_delete', [$this->getEntity()]);
114 public function getConstraints() {
115 $constraint_manager = \Drupal::typedDataManager()->getValidationConstraintManager();
116 $constraints = parent::getConstraints();
118 $constraints[] = $constraint_manager->create('ComplexData', [
122 'message' => t('%name does not accept the value @value.', ['%name' => $this->getFieldDefinition()->getLabel(), '@value' => -1]),
133 public function isEmpty() {
134 return empty($this->value);
140 public static function storageSettingsToConfigData(array $settings) {
141 $settings['config_data_from_storage_setting'] = 'TRUE';
142 unset($settings['storage_setting_from_config_data']);
149 public static function storageSettingsFromConfigData(array $settings) {
150 $settings['storage_setting_from_config_data'] = 'TRUE';
151 unset($settings['config_data_from_storage_setting']);
158 public static function fieldSettingsToConfigData(array $settings) {
159 $settings['config_data_from_field_setting'] = 'TRUE';
160 unset($settings['field_setting_from_config_data']);
167 public static function fieldSettingsFromConfigData(array $settings) {
168 $settings['field_setting_from_config_data'] = 'TRUE';
169 unset($settings['config_data_from_field_setting']);