function RouteBuilder::rebuild

Same name in this branch
  1. main core/lib/Drupal/Core/ProxyClass/Routing/RouteBuilder.php \Drupal\Core\ProxyClass\Routing\RouteBuilder::rebuild()
Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/ProxyClass/Routing/RouteBuilder.php \Drupal\Core\ProxyClass\Routing\RouteBuilder::rebuild()
  2. 11.x core/lib/Drupal/Core/Routing/RouteBuilder.php \Drupal\Core\Routing\RouteBuilder::rebuild()
  3. 10 core/lib/Drupal/Core/ProxyClass/Routing/RouteBuilder.php \Drupal\Core\ProxyClass\Routing\RouteBuilder::rebuild()
  4. 10 core/lib/Drupal/Core/Routing/RouteBuilder.php \Drupal\Core\Routing\RouteBuilder::rebuild()
  5. 9 core/lib/Drupal/Core/ProxyClass/Routing/RouteBuilder.php \Drupal\Core\ProxyClass\Routing\RouteBuilder::rebuild()
  6. 9 core/lib/Drupal/Core/Routing/RouteBuilder.php \Drupal\Core\Routing\RouteBuilder::rebuild()
  7. 8.9.x core/lib/Drupal/Core/ProxyClass/Routing/RouteBuilder.php \Drupal\Core\ProxyClass\Routing\RouteBuilder::rebuild()
  8. 8.9.x core/lib/Drupal/Core/Routing/RouteBuilder.php \Drupal\Core\Routing\RouteBuilder::rebuild()

Rebuilds the route information and dumps it.

Return value

bool Returns TRUE if the rebuild succeeds, FALSE otherwise.

Overrides RouteBuilderInterface::rebuild

1 call to RouteBuilder::rebuild()
RouteBuilder::rebuildIfNeeded in core/lib/Drupal/Core/Routing/RouteBuilder.php

File

core/lib/Drupal/Core/Routing/RouteBuilder.php, line 112

Class

RouteBuilder
Managing class for rebuilding the router table.

Namespace

Drupal\Core\Routing

Code

public function rebuild() {
  if ($this->building) {
    throw new \RuntimeException('Recursive router rebuild detected.');
  }
  if (!$this->lock
    ->acquire('router_rebuild')) {
    // Wait for another request that is already doing this work.
    // We choose to block here since otherwise the routes might not be
    // available, resulting in a 404.
    $this->lock
      ->wait('router_rebuild');
    return FALSE;
  }
  $this->building = TRUE;
  $collection = new RouteCollection();
  // STATIC is supposed to be used to add new routes based static information
  // like routing.yml files or PHP attributes.
  $this->dispatcher
    ->dispatch(new RouteBuildEvent($collection), RoutingEvents::STATIC);
  // DYNAMIC is supposed to be used to add new routes based upon all the
  // static defined ones.
  $this->dispatcher
    ->dispatch(new RouteBuildEvent($collection), RoutingEvents::DYNAMIC);
  // ALTER is the final step to alter all the existing routes. We cannot stop
  // people from adding new routes here, but we define it as a separate step
  // to make it clear.
  $this->dispatcher
    ->dispatch(new RouteBuildEvent($collection), RoutingEvents::ALTER);
  $this->checkProvider
    ->setChecks($collection);
  $this->dumper
    ->addRoutes($collection);
  $this->dumper
    ->dump();
  $this->lock
    ->release('router_rebuild');
  $this->dispatcher
    ->dispatch(new Event(), RoutingEvents::FINISHED);
  $this->building = FALSE;
  $this->rebuildNeeded = FALSE;
  return TRUE;
}

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