You are here

public function RouteProcessor::processOutbound in Config Entity Revisions 8.2

Processes the outbound route.

Parameters

string $route_name: The route name.

\Symfony\Component\Routing\Route $route: The outbound route to process.

array $parameters: An array of parameters to be passed to the route compiler. Passed by reference.

\Drupal\Core\Render\BubbleableMetadata $bubbleable_metadata: (optional) Object to collect route processors' bubbleable metadata.

Return value

The processed path.

Overrides OutboundRouteProcessorInterface::processOutbound

File

src/Routing/RouteProcessor.php, line 20

Class

RouteProcessor
Processes the outbound route to add revision IDs to parameters.

Namespace

Drupal\config_entity_revisions\Routing

Code

public function processOutbound($route_name, Route $route, array &$parameters, BubbleableMetadata $bubbleable_metadata = NULL) {
  $route_params = $route
    ->getOption('parameters');
  if (empty($route_params['revision_id']) || !$route_params['revision_id']) {
    return;
  }
  if (!empty($parameters['revision_id'])) {
    return;
  }
  $revision_id = \Drupal::routeMatch()
    ->getParameter('revision_id');
  if (empty($revision_id)) {

    // Find the revisioned entity.
    foreach (\Drupal::routeMatch()
      ->getParameters() as $param) {
      if ($param instanceof ConfigEntityRevisionsConfigEntityContainerInterface) {
        $revision_id = $param
          ->revisionedEntity()->loadedRevisionId;
        break;
      }
    }
  }
  $parameters['revision_id'] = $revision_id;
}