1<?php 2 3namespace Drupal\Core\Field\Plugin\Field\FieldType; 4 5use Drupal\Core\Field\FieldItemBase; 6use Drupal\Core\Field\FieldStorageDefinitionInterface; 7use Drupal\Core\StringTranslation\TranslatableMarkup; 8use Drupal\Core\TypedData\DataDefinition; 9 10/** 11 * Base class for string field types. 12 */ 13abstract class StringItemBase extends FieldItemBase { 14 15 /** 16 * {@inheritdoc} 17 */ 18 public static function defaultStorageSettings() { 19 return [ 20 'case_sensitive' => FALSE, 21 ] + parent::defaultStorageSettings(); 22 } 23 24 /** 25 * {@inheritdoc} 26 */ 27 public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) { 28 // This is called very early by the user entity roles field. Prevent 29 // early t() calls by using the TranslatableMarkup. 30 $properties['value'] = DataDefinition::create('string') 31 ->setLabel(new TranslatableMarkup('Text value')) 32 ->setSetting('case_sensitive', $field_definition->getSetting('case_sensitive')) 33 ->setRequired(TRUE); 34 35 return $properties; 36 } 37 38 /** 39 * {@inheritdoc} 40 */ 41 public function isEmpty() { 42 $value = $this->get('value')->getValue(); 43 return $value === NULL || $value === ''; 44 } 45 46} 47