function DefaultHtmlRouteProvider::getCanonicalRoute

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider::getCanonicalRoute()
  2. 8.9.x core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider::getCanonicalRoute()
  3. 10 core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider::getCanonicalRoute()

Gets the canonical route.

Parameters

\Drupal\Core\Entity\EntityTypeInterface $entity_type: The entity type.

Return value

\Symfony\Component\Routing\Route|null The generated route, if available.

3 calls to DefaultHtmlRouteProvider::getCanonicalRoute()
DefaultHtmlRouteProvider::getRoutes in core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php
Provides routes for entities.
MediaRouteProvider::getCanonicalRoute in core/modules/media/src/Routing/MediaRouteProvider.php
Gets the canonical route.
TestDefaultHtmlRouteProvider::getCanonicalRoute in core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php
Gets the canonical route.
2 methods override DefaultHtmlRouteProvider::getCanonicalRoute()
MediaRouteProvider::getCanonicalRoute in core/modules/media/src/Routing/MediaRouteProvider.php
Gets the canonical route.
TestDefaultHtmlRouteProvider::getCanonicalRoute in core/tests/Drupal/Tests/Core/Entity/Routing/DefaultHtmlRouteProviderTest.php
Gets the canonical route.

File

core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php, line 217

Class

DefaultHtmlRouteProvider
Provides HTML routes for entities.

Namespace

Drupal\Core\Entity\Routing

Code

protected function getCanonicalRoute(EntityTypeInterface $entity_type) {
    if ($entity_type->hasLinkTemplate('canonical') && $entity_type->hasViewBuilderClass()) {
        $entity_type_id = $entity_type->id();
        $route = new Route($entity_type->getLinkTemplate('canonical'));
        $route->addDefaults([
            '_entity_view' => "{$entity_type_id}.full",
            '_title_callback' => '\\Drupal\\Core\\Entity\\Controller\\EntityController::title',
        ])
            ->setRequirement('_entity_access', "{$entity_type_id}.view")
            ->setOption('parameters', [
            $entity_type_id => [
                'type' => 'entity:' . $entity_type_id,
            ],
        ]);
        // Entity types with serial IDs can specify this in their route
        // requirements, improving the matching process.
        if ($this->getEntityTypeIdKeyType($entity_type) === 'integer') {
            $route->setRequirement($entity_type_id, '\\d+');
        }
        return $route;
    }
}

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