function EntityDeriver::getDerivativeDefinitions

Same name in this branch
  1. 11.x core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
Same name and namespace in other branches
  1. 10 core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  2. 10 core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()
  3. 9 core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  4. 9 core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()
  5. 8.9.x core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  6. 8.9.x core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()
  7. main core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  8. main core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()

Gets the definition of all derivatives of a base plugin.

Parameters

array|\Drupal\Component\Plugin\Definition\PluginDefinitionInterface $base_plugin_definition: The definition of the base plugin from which the derivative plugin is derived. It is maybe an entire object or just some array, depending on the discovery mechanism.

Return value

array An array of full derivative definitions keyed on derivative id.

Overrides DeriverInterface::getDerivativeDefinitions

1 call to EntityDeriver::getDerivativeDefinitions()
EntityDeriver::getDerivativeDefinition in core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php
Gets the definition of a derivative plugin.

File

core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php, line 89

Class

EntityDeriver
Provides data type plugins for each existing entity type and bundle.

Namespace

Drupal\Core\Entity\Plugin\DataType\Deriver

Code

public function getDerivativeDefinitions($base_plugin_definition) {
  // Also keep the 'entity' defined as is.
  $this->derivatives[''] = $base_plugin_definition;
  // Add definitions for each entity type and bundle.
  foreach ($this->entityTypeManager
    ->getDefinitions() as $entity_type_id => $entity_type) {
    $class = $entity_type->entityClassImplements(ConfigEntityInterface::class) ? ConfigEntityAdapter::class : EntityAdapter::class;
    $this->derivatives[$entity_type_id] = [
      'class' => $class,
      'label' => $entity_type->getLabel(),
      'constraints' => $entity_type->getConstraints(),
      'internal' => $entity_type->isInternal(),
    ] + $base_plugin_definition;
    // Incorporate the bundles as entity:$entity_type:$bundle, if any.
    $bundle_info = $this->bundleInfoService
      ->getBundleInfo($entity_type_id);
    if (count($bundle_info) > 1 || $entity_type->getKey('bundle')) {
      foreach ($bundle_info as $bundle => $info) {
        $this->derivatives[$entity_type_id . ':' . $bundle] = [
          'class' => $class,
          'label' => $info['label'],
          'constraints' => $this->derivatives[$entity_type_id]['constraints'],
        ] + $base_plugin_definition;
      }
    }
  }
  return $this->derivatives;
}

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