diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php index 6e0b4d8..ef25bb1 100644 --- a/core/lib/Drupal/Core/Entity/Entity.php +++ b/core/lib/Drupal/Core/Entity/Entity.php @@ -309,6 +309,9 @@ protected function urlRouteParameters($rel) { if ($rel === 'revision') { $uri_route_parameters[$this->getEntityTypeId() . '_revision'] = $this->getRevisionId(); } + if ($rel === 'uuid') { + $uri_route_parameters[$this->getEntityTypeId()] = $this->uuid(); + } return $uri_route_parameters; } diff --git a/core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php b/core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php index 1979974..6c712f5 100644 --- a/core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php +++ b/core/lib/Drupal/Core/Entity/Routing/DefaultHtmlRouteProvider.php @@ -260,7 +260,7 @@ protected function getUuidRoute(EntityTypeInterface $entity_type) { $entity_type_id => ['type' => 'entity:' . $entity_type_id], ]) // Set requirement for UUID pattern. - ->setRequirement($entity_type_id, '/^' . Uuid::VALID_PATTERN . '$/'); + ->setRequirement($entity_type_id, '^' . Uuid::VALID_PATTERN . '$'); return $route; } } diff --git a/core/modules/node/src/Entity/NodeRouteProvider.php b/core/modules/node/src/Entity/NodeRouteProvider.php index 0803f1e..b46b09d 100644 --- a/core/modules/node/src/Entity/NodeRouteProvider.php +++ b/core/modules/node/src/Entity/NodeRouteProvider.php @@ -2,6 +2,7 @@ namespace Drupal\node\Entity; +use Drupal\Component\Uuid\Uuid; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\Routing\EntityRouteProviderInterface; use Symfony\Component\Routing\Route; @@ -17,6 +18,17 @@ class NodeRouteProvider implements EntityRouteProviderInterface { */ public function getRoutes( EntityTypeInterface $entity_type) { $route_collection = new RouteCollection(); + + $route = (new Route("/node/{node}")) + ->addDefaults([ + '_controller' => '\Drupal\node\Controller\NodeViewController::view', + '_title_callback' => '\Drupal\node\Controller\NodeViewController::title', + ]) + // Set requirement for UUID pattern. + ->setRequirement('node', '^' . Uuid::VALID_PATTERN . '$') + ->setRequirement('_entity_access', 'node.view'); + $route_collection->add('entity.node.uuid', $route); + $route = (new Route('/node/{node}')) ->addDefaults([ '_controller' => '\Drupal\node\Controller\NodeViewController::view', diff --git a/core/modules/user/src/Entity/UserRouteProvider.php b/core/modules/user/src/Entity/UserRouteProvider.php index d1e9671..14543bb 100644 --- a/core/modules/user/src/Entity/UserRouteProvider.php +++ b/core/modules/user/src/Entity/UserRouteProvider.php @@ -2,6 +2,7 @@ namespace Drupal\user\Entity; +use Drupal\Component\Uuid\Uuid; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\Routing\EntityRouteProviderInterface; use Symfony\Component\Routing\Route; @@ -17,6 +18,17 @@ class UserRouteProvider implements EntityRouteProviderInterface { */ public function getRoutes(EntityTypeInterface $entity_type) { $route_collection = new RouteCollection(); + + $route = (new Route("/user/{user}")) + ->addDefaults([ + '_entity_view' => 'user.full', + '_title_callback' => 'Drupal\user\Controller\UserController::userTitle', + ]) + // Set requirement for UUID pattern. + ->setRequirement('user', '^' . Uuid::VALID_PATTERN . '$') + ->setRequirement('_entity_access', 'user.view'); + $route_collection->add('entity.user.uuid', $route); + $route = (new Route('/user/{user}')) ->setDefaults([ '_entity_view' => 'user.full',