Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Field/BaseFieldDefinition.php \Drupal\Core\Field\BaseFieldDefinition::getOptionsProvider()
  2. 9 core/lib/Drupal/Core/Field/BaseFieldDefinition.php \Drupal\Core\Field\BaseFieldDefinition::getOptionsProvider()

Gets an options provider for the given field item property.

Parameters

string $property_name: The name of the property to get options for; e.g., 'value'.

\Drupal\Core\Entity\FieldableEntityInterface $entity: The entity for which the options should be provided.

Return value

\Drupal\Core\TypedData\OptionsProviderInterface|null An options provider, or NULL if no options are defined.

Overrides FieldStorageDefinitionInterface::getOptionsProvider

File

core/lib/Drupal/Core/Field/BaseFieldDefinition.php, line 560

Class

BaseFieldDefinition
A class for defining entity fields.

Namespace

Drupal\Core\Field

Code

public function getOptionsProvider($property_name, FieldableEntityInterface $entity) {

  // If the field item class implements the interface, create an orphaned
  // runtime item object, so that it can be used as the options provider
  // without modifying the entity being worked on.
  if (is_subclass_of($this
    ->getItemDefinition()
    ->getClass(), OptionsProviderInterface::class)) {
    $items = $entity
      ->get($this
      ->getName());
    return \Drupal::service('plugin.manager.field.field_type')
      ->createFieldItem($items, 0);
  }

  // @todo: Allow setting custom options provider, see
  // https://www.drupal.org/node/2002138.
}