StringItem.php 1.88 KB
Newer Older
1 2 3 4
<?php

/**
 * @file
5
 * Contains \Drupal\Core\Entity\Plugin\Field\FieldType\StringItem.
6 7
 */

8
namespace Drupal\Core\Field\Plugin\Field\FieldType;
9

10
use Drupal\Core\Field\FieldDefinitionInterface;
11
use Drupal\Core\Field\FieldItemBase;
12
use Drupal\Core\TypedData\DataDefinition;
13 14

/**
15
 * Defines the 'string' entity field type.
16
 *
17 18 19
 * @FieldType(
 *   id = "string",
 *   label = @Translation("String"),
20
 *   description = @Translation("An entity field containing a string value."),
21 22 23
 *   settings = {
 *     "max_length" = "255"
 *   },
24 25 26
 *   configurable = FALSE,
 *   default_widget = "string",
 *   default_formatter = "string"
27
 * )
28 29 30 31
 */
class StringItem extends FieldItemBase {

  /**
32
   * {@inheritdoc}
33
   */
34 35 36
  public static function propertyDefinitions(FieldDefinitionInterface $field_definition) {
    $properties['value'] = DataDefinition::create('string')
      ->setLabel(t('Text value'));
37

38
    return $properties;
39
  }
40 41 42 43 44 45 46 47 48

  /**
   * {@inheritdoc}
   */
  public static function schema(FieldDefinitionInterface $field_definition) {
    return array(
      'columns' => array(
        'value' => array(
          'type' => 'varchar',
49
          'length' => (int) $field_definition->getSetting('max_length'),
50 51 52 53 54 55
          'not null' => FALSE,
        ),
      ),
    );
  }

56 57 58 59 60 61
  /**
   * {@inheritdoc}
   */
  public function getConstraints() {
    $constraints = parent::getConstraints();

62
    if ($max_length = $this->getSetting('max_length')) {
63 64
      $constraint_manager = \Drupal::typedDataManager()->getValidationConstraintManager();
      $constraints[] = $constraint_manager->create('ComplexData', array(
65 66 67 68 69 70
        'value' => array(
          'Length' => array(
            'max' => $max_length,
            'maxMessage' => t('%name: may not be longer than @max characters.', array('%name' => $this->getFieldDefinition()->getLabel(), '@max' => $max_length)),
          ),
        ),
71 72 73 74 75 76
      ));
    }

    return $constraints;
  }

77
}