StringItem.php 1.6 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
 *   configurable = FALSE
25
 * )
26 27 28 29
 */
class StringItem extends FieldItemBase {

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

36
    return $properties;
37
  }
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

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

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

60
    if ($max_length = $this->getSetting('max_length')) {
61 62 63 64 65 66 67 68 69
      $constraint_manager = \Drupal::typedDataManager()->getValidationConstraintManager();
      $constraints[] = $constraint_manager->create('ComplexData', array(
        'value' => array('Length' => array('max' => $max_length))
      ));
    }

    return $constraints;
  }

70
}