You are here

function dynamic_entity_reference_entity_test_entity_base_field_info in Dynamic Entity Reference 8.2

Same name and namespace in other branches
  1. 8 tests/modules/dynamic_entity_reference_entity_test/dynamic_entity_reference_entity_test.module \dynamic_entity_reference_entity_test_entity_base_field_info()

Implements hook_entity_base_field_info().

3 calls to dynamic_entity_reference_entity_test_entity_base_field_info()
DynamicEntityReferenceBaseFieldTest::testMultipleEntityReference in tests/src/Kernel/DynamicEntityReferenceBaseFieldTest.php
Tests the der field type for referencing multiple content entities.
DynamicEntityReferenceConfigEntityBaseFieldTest::testMixedRevisionableBaseField in tests/src/Kernel/DynamicEntityReferenceConfigEntityBaseFieldTest.php
Content entity and config entity revisionable base DER field.
DynamicEntityReferenceConfigEntityBaseFieldTest::testRevisionableBaseField in tests/src/Kernel/DynamicEntityReferenceConfigEntityBaseFieldTest.php
Config entity only revisionable base DER field.

File

tests/modules/dynamic_entity_reference_entity_test/dynamic_entity_reference_entity_test.module, line 15
Module file for dynamic_entity_reference_entity_test.

Code

function dynamic_entity_reference_entity_test_entity_base_field_info(EntityTypeInterface $entity_type) {
  $fields = [];

  // 'entity_test' with no data table and 'entity_test_mul' is with data table.
  $test_entities = \Drupal::state()
    ->get('dynamic_entity_reference_entity_test_entities', [
    'entity_test',
    'entity_test_mul',
  ]);
  $excluded_entity = \Drupal::state()
    ->get('dynamic_entity_reference_entity_test_exclude', []);
  if (in_array($entity_type
    ->id(), $test_entities)) {
    $allowed_entities = array_diff($test_entities, $excluded_entity);
    $settings = [
      'exclude_entity_types' => FALSE,
      'entity_type_ids' => array_combine($allowed_entities, $allowed_entities),
    ];
    foreach ($test_entities as $entity_type_id) {
      if (!in_array($entity_type_id, $excluded_entity)) {
        $settings += [
          $entity_type_id => [
            'handler' => "default:{$entity_type_id}",
            'handler_settings' => [
              'target_bundles' => NULL,
            ],
          ],
        ];
      }
    }
    $fields['dynamic_references'] = BaseFieldDefinition::create('dynamic_entity_reference')
      ->setName('dynamic_references')
      ->setLabel((string) new TranslatableMarkup('References'))
      ->setDescription((string) new TranslatableMarkup('Reference another entity.'))
      ->setRequired(FALSE)
      ->setRevisionable(\Drupal::state()
      ->get('dynamic_entity_reference_entity_test_revisionable', FALSE))
      ->setCardinality(\Drupal::state()
      ->get('dynamic_entity_reference_entity_test_cardinality', 1))
      ->setDisplayOptions('form', [
      'type' => 'dynamic_entity_reference_default',
      'weight' => 10,
    ])
      ->setDisplayOptions('view', [
      'label' => 'above',
      'type' => 'dynamic_entity_reference_label',
      'weight' => 10,
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE)
      ->setSettings($settings);
    if (\Drupal::state()
      ->get('dynamic_entity_reference_entity_test_with_two_base_fields', FALSE)) {
      $fields['der'] = BaseFieldDefinition::createFromFieldStorageDefinition($fields['dynamic_references'])
        ->setName('der');
    }

    // Adds a normal entity reference field if set to do so.
    if (\Drupal::state()
      ->get('dynamic_entity_reference_entity_test_with_normal', FALSE)) {
      $fields['normal_reference'] = BaseFieldDefinition::create('entity_reference')
        ->setLabel(t('Entity ID'))
        ->setDescription(t('The referenced ID of the entity.'))
        ->setRequired(TRUE);
    }
  }
  return $fields;
}