EntityReferenceFieldCreationTrait.php

Same filename and directory in other branches
  1. 10 core/modules/field/tests/src/Traits/EntityReferenceFieldCreationTrait.php

Namespace

Drupal\Tests\field\Traits

File

core/modules/field/tests/src/Traits/EntityReferenceFieldCreationTrait.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\field\Traits;

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;

/**
 * Provides common functionality for the EntityReference test classes.
 */
trait EntityReferenceFieldCreationTrait {
    
    /**
     * Creates a field of an entity reference field storage on the specified bundle.
     *
     * @param string $entity_type
     *   The type of entity the field will be attached to.
     * @param string $bundle
     *   The bundle name of the entity the field will be attached to.
     * @param string $field_name
     *   The name of the field; if it already exists, a new instance of the existing
     *   field will be created.
     * @param string $field_label
     *   The label of the field.
     * @param string $target_entity_type
     *   The type of the referenced entity.
     * @param string $selection_handler
     *   The selection handler used by this field.
     * @param array $selection_handler_settings
     *   An array of settings supported by the selection handler specified above.
     *   (e.g. 'target_bundles', 'sort', 'auto_create', etc).
     * @param int $cardinality
     *   The cardinality of the field.
     *
     * @see \Drupal\Core\Entity\Plugin\EntityReferenceSelection\SelectionBase::buildConfigurationForm()
     */
    protected function createEntityReferenceField($entity_type, $bundle, $field_name, $field_label, $target_entity_type, $selection_handler = 'default', $selection_handler_settings = [], $cardinality = 1) {
        // Look for or add the specified field to the requested entity bundle.
        if (!FieldStorageConfig::loadByName($entity_type, $field_name)) {
            FieldStorageConfig::create([
                'field_name' => $field_name,
                'type' => 'entity_reference',
                'entity_type' => $entity_type,
                'cardinality' => $cardinality,
                'settings' => [
                    'target_type' => $target_entity_type,
                ],
            ])->save();
        }
        if (!FieldConfig::loadByName($entity_type, $bundle, $field_name)) {
            FieldConfig::create([
                'field_name' => $field_name,
                'entity_type' => $entity_type,
                'bundle' => $bundle,
                'label' => $field_label,
                'settings' => [
                    'handler' => $selection_handler,
                    'handler_settings' => $selection_handler_settings,
                ],
            ])->save();
        }
    }

}

Traits

Title Deprecated Summary
EntityReferenceFieldCreationTrait Provides common functionality for the EntityReference test classes.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.