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. 9 core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  2. 9 core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()
  3. 8.9.x core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  4. 8.9.x core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()
  5. 10 core/modules/rest/src/Plugin/Deriver/EntityDeriver.php \Drupal\rest\Plugin\Deriver\EntityDeriver::getDerivativeDefinitions()
  6. 10 core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php \Drupal\Core\Entity\Plugin\DataType\Deriver\EntityDeriver::getDerivativeDefinitions()

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.