3 namespace Drupal\Core\Field\Plugin\Field\FieldType;
5 use Drupal\Component\Utility\Random;
6 use Drupal\Core\Field\FieldDefinitionInterface;
7 use Drupal\Core\Field\FieldStorageDefinitionInterface;
8 use Drupal\Core\Form\FormStateInterface;
11 * Defines the 'string' entity field type.
15 * label = @Translation("Text (plain)"),
16 * description = @Translation("A field containing a plain string value."),
17 * category = @Translation("Text"),
18 * default_widget = "string_textfield",
19 * default_formatter = "string"
22 class StringItem extends StringItemBase {
27 public static function defaultStorageSettings() {
31 ] + parent::defaultStorageSettings();
37 public static function schema(FieldStorageDefinitionInterface $field_definition) {
41 'type' => $field_definition->getSetting('is_ascii') === TRUE ? 'varchar_ascii' : 'varchar',
42 'length' => (int) $field_definition->getSetting('max_length'),
43 'binary' => $field_definition->getSetting('case_sensitive'),
52 public function getConstraints() {
53 $constraints = parent::getConstraints();
55 if ($max_length = $this->getSetting('max_length')) {
56 $constraint_manager = \Drupal::typedDataManager()->getValidationConstraintManager();
57 $constraints[] = $constraint_manager->create('ComplexData', [
61 'maxMessage' => t('%name: may not be longer than @max characters.', ['%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length]),
73 public static function generateSampleValue(FieldDefinitionInterface $field_definition) {
74 $random = new Random();
75 $values['value'] = $random->word(mt_rand(1, $field_definition->getSetting('max_length')));
82 public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
85 $element['max_length'] = [
87 '#title' => t('Maximum length'),
88 '#default_value' => $this->getSetting('max_length'),
90 '#description' => t('The maximum length of the field in characters.'),
92 '#disabled' => $has_data,