3 namespace Drupal\entity_test_update\Entity;
5 use Drupal\Core\Entity\ContentEntityBase;
6 use Drupal\Core\Entity\EntityStorageInterface;
7 use Drupal\Core\Entity\EntityTypeInterface;
8 use Drupal\Core\Field\BaseFieldDefinition;
9 use Drupal\Core\StringTranslation\TranslatableMarkup;
12 * Defines the test entity class for testing definition and schema updates.
14 * This entity type starts out non-revisionable and non-translatable, but during
15 * an update test it can be made revisionable and translatable using the helper
16 * methods from \Drupal\system\Tests\Entity\EntityDefinitionTestTrait.
19 * id = "entity_test_update",
20 * label = @Translation("Test entity update"),
22 * "storage_schema" = "Drupal\entity_test_update\EntityTestUpdateStorageSchema",
24 * base_table = "entity_test_update",
25 * persistent_cache = FALSE,
31 * "langcode" = "langcode",
33 * content_translation_ui_skip = TRUE,
36 class EntityTestUpdate extends ContentEntityBase {
41 public static function preCreate(EntityStorageInterface $storage, array &$values) {
42 parent::preCreate($storage, $values);
43 if (empty($values['type'])) {
44 $values['type'] = $storage->getEntityTypeId();
51 public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
52 // This entity type is used for generating database dumps from Drupal
53 // 8.0.0-rc1, which didn't have the entity key base fields defined in
54 // the parent class (ContentEntityBase), so we have to duplicate them here.
56 $fields[$entity_type->getKey('id')] = BaseFieldDefinition::create('integer')
57 ->setLabel(new TranslatableMarkup('ID'))
58 ->setDescription(new TranslatableMarkup('The ID of the test entity.'))
60 ->setSetting('unsigned', TRUE);
62 $fields[$entity_type->getKey('uuid')] = BaseFieldDefinition::create('uuid')
63 ->setLabel(new TranslatableMarkup('UUID'))
64 ->setDescription(new TranslatableMarkup('The UUID of the test entity.'))
67 $fields[$entity_type->getKey('bundle')] = BaseFieldDefinition::create('string')
68 ->setLabel(new TranslatableMarkup('Type'))
69 ->setDescription(new TranslatableMarkup('The bundle of the test entity.'))
72 if ($entity_type->hasKey('revision')) {
73 $fields[$entity_type->getKey('revision')] = BaseFieldDefinition::create('integer')
74 ->setLabel(new TranslatableMarkup('Revision ID'))
76 ->setSetting('unsigned', TRUE);
79 $fields[$entity_type->getKey('langcode')] = BaseFieldDefinition::create('language')
80 ->setLabel(new TranslatableMarkup('Language'));
81 if ($entity_type->isRevisionable()) {
82 $fields[$entity_type->getKey('langcode')]->setRevisionable(TRUE);
84 if ($entity_type->isTranslatable()) {
85 $fields[$entity_type->getKey('langcode')]->setTranslatable(TRUE);
88 $fields['name'] = BaseFieldDefinition::create('string')
89 ->setLabel(new TranslatableMarkup('Name'))
90 ->setDescription(new TranslatableMarkup('The name of the test entity.'))
91 ->setTranslatable(TRUE)
92 ->setRevisionable(TRUE)
93 ->setSetting('max_length', 32)
94 ->setDisplayOptions('view', [
99 ->setDisplayOptions('form', [
100 'type' => 'string_textfield',
104 $fields['test_single_property'] = BaseFieldDefinition::create('string')
105 ->setLabel(new TranslatableMarkup('Field with a single property'))
106 ->setTranslatable(TRUE)
107 ->setRevisionable(TRUE);
109 $fields['test_multiple_properties'] = BaseFieldDefinition::create('multi_value_test')
110 ->setLabel(new TranslatableMarkup('Field with multiple properties'))
111 ->setTranslatable(TRUE)
112 ->setRevisionable(TRUE);
114 $fields['test_single_property_multiple_values'] = BaseFieldDefinition::create('string')
115 ->setLabel(new TranslatableMarkup('Field with a single property and multiple values'))
117 ->setTranslatable(TRUE)
118 ->setRevisionable(TRUE);
120 $fields['test_multiple_properties_multiple_values'] = BaseFieldDefinition::create('multi_value_test')
121 ->setLabel(new TranslatableMarkup('Field with multiple properties and multiple values'))
123 ->setTranslatable(TRUE)
124 ->setRevisionable(TRUE);
126 $fields['test_non_rev_field'] = BaseFieldDefinition::create('string')
127 ->setLabel(new TranslatableMarkup('Non Revisionable Field'))
128 ->setDescription(new TranslatableMarkup('A non-revisionable test field.'))
130 ->setRevisionable(FALSE)
131 ->setTranslatable(TRUE);
133 $fields['test_non_mul_field'] = BaseFieldDefinition::create('string')
134 ->setLabel(new TranslatableMarkup('Non Translatable Field'))
135 ->setDescription(new TranslatableMarkup('A non-translatable test field.'))
137 ->setRevisionable(TRUE)
138 ->setTranslatable(FALSE);
140 $fields['test_non_mulrev_field'] = BaseFieldDefinition::create('string')
141 ->setLabel(new TranslatableMarkup('Non Revisionable and Translatable Field'))
142 ->setDescription(new TranslatableMarkup('A non-revisionable and non-translatable test field.'))
144 ->setRevisionable(FALSE)
145 ->setTranslatable(FALSE);
147 $fields += \Drupal::state()->get('entity_test_update.additional_base_field_definitions', []);
154 public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
155 $fields = parent::bundleFieldDefinitions($entity_type, $bundle, $base_field_definitions);
156 $fields += \Drupal::state()->get('entity_test_update.additional_bundle_field_definitions.' . $bundle, []);