function PathProcessorEntityResourceBC::processInbound

Overrides InboundPathProcessorInterface::processInbound

File

core/modules/rest/src/PathProcessor/PathProcessorEntityResourceBC.php, line 34

Class

PathProcessorEntityResourceBC
Path processor to maintain BC for entity REST resource URLs from Drupal 8.0.

Namespace

Drupal\rest\PathProcessor

Code

public function processInbound($path, Request $request) {
    if ($request->getMethod() === 'POST' && strpos($path, '/entity/') === 0) {
        $parts = explode('/', $path);
        $entity_type_id = array_pop($parts);
        // Until Drupal 8.3, no entity types specified a link template for the
        // 'create' link relation type. As of Drupal 8.3, all core content entity
        // types provide this link relation type. This inbound path processor
        // provides automatic backwards compatibility: it allows both the old
        // default from \Drupal\rest\Plugin\rest\resource\EntityResource, i.e.
        // "/entity/{entity_type}" and the link template specified in a particular
        // entity type. The former is rewritten to the latter
        // specific one if it exists.
        $entity_type = $this->entityTypeManager
            ->getDefinition($entity_type_id);
        if ($entity_type->hasLinkTemplate('create')) {
            return $entity_type->getLinkTemplate('create');
        }
    }
    return $path;
}

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