function EntityDeriver::getDerivativeDefinitions

Same name in this branch
  1. 11.x core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\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/modules/rest/src/Plugin/Deriver/EntityDeriver.php
Gets the definition of a derivative plugin.

File

core/modules/rest/src/Plugin/Deriver/EntityDeriver.php, line 64

Class

EntityDeriver
Provides a resource plugin definition for every entity type.

Namespace

Drupal\rest\Plugin\Deriver

Code

public function getDerivativeDefinitions($base_plugin_definition) {
  if (!isset($this->derivatives)) {
    // Add in the default plugin configuration and the resource type.
    foreach ($this->entityTypeManager
      ->getDefinitions() as $entity_type_id => $entity_type) {
      if ($entity_type->isInternal()) {
        continue;
      }
      $this->derivatives[$entity_type_id] = [
        'id' => 'entity:' . $entity_type_id,
        'entity_type' => $entity_type_id,
        'serialization_class' => $entity_type->getClass(),
        'label' => $entity_type->getLabel(),
      ];
      $default_uris = [
        'canonical' => "/entity/{$entity_type_id}/" . '{' . $entity_type_id . '}',
        'create' => "/entity/{$entity_type_id}",
      ];
      foreach ($default_uris as $link_relation => $default_uri) {
        // Check if there are link templates defined for the entity type and
        // use the path from the route instead of the default.
        if ($link_template = $entity_type->getLinkTemplate($link_relation)) {
          $this->derivatives[$entity_type_id]['uri_paths'][$link_relation] = $link_template;
        }
        else {
          $this->derivatives[$entity_type_id]['uri_paths'][$link_relation] = $default_uri;
        }
      }
      $this->derivatives[$entity_type_id] += $base_plugin_definition;
    }
  }
  return $this->derivatives;
}

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