public function RouteSubscriber::dynamicRoutes

Adds routes to enabled REST resources.

Parameters

\Drupal\Core\Routing\RouteBuildEvent $event: The route building event.

File

drupal/core/modules/rest/lib/Drupal/rest/EventSubscriber/RouteSubscriber.php, line 54

Class

RouteSubscriber
Subscriber for REST-style routes.

Namespace

Drupal\rest\EventSubscriber

Code

public function dynamicRoutes(RouteBuildEvent $event) {
  $collection = $event
    ->getRouteCollection();
  $resources = $this->config
    ->get('rest')
    ->load()
    ->get('resources');
  if ($resources && ($enabled = array_intersect_key($this->manager
    ->getDefinitions(), $resources))) {
    foreach ($enabled as $key => $resource) {
      $plugin = $this->manager
        ->getInstance(array(
        'id' => $key,
      ));

      // @todo Switch to ->addCollection() once http://drupal.org/node/1819018 is resolved.
      foreach ($plugin
        ->routes() as $name => $route) {
        $route
          ->setRequirement('_access', 'TRUE');
        $collection
          ->add("rest.{$name}", $route);
      }
    }
  }
}