Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
CRAP
94.12% covered (success)
94.12%
16 / 17
ViewPageController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
7.01
94.12% covered (success)
94.12%
16 / 17
 handle
0.00% covered (danger)
0.00%
0 / 1
7.01
94.12% covered (success)
94.12%
16 / 17
<?php
/**
 * @file
 * Contains \Drupal\views\Routing\ViewPageController.
 */
namespace Drupal\views\Routing;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\views\Plugin\views\display\Page;
/**
 * Defines a page controller to execute and render a view.
 */
class ViewPageController {
  /**
   * Handler a response for a given view and display.
   *
   * @param string $view_id
   *   The ID of the view
   * @param string $display_id
   *   The ID of the display.
   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
   *   The route match.
   * @return null|void
   */
  public function handle($view_id, $display_id, RouteMatchInterface $route_match) {
    $args = array();
    $route = $route_match->getRouteObject();
    $map = $route->hasOption('_view_argument_map') ? $route->getOption('_view_argument_map') : array();
    foreach ($map as $attribute => $parameter_name) {
      // Allow parameters be pulled from the request.
      // The map stores the actual name of the parameter in the request. Views
      // which override existing controller, use for example 'node' instead of
      // arg_nid as name.
      if (isset($map[$attribute])) {
        $attribute = $map[$attribute];
      }
      if ($arg = $route_match->getRawParameter($attribute)) {
      }
      else {
        $arg = $route_match->getParameter($attribute);
      }
      if (isset($arg)) {
        $args[] = $arg;
      }
    }
    /** @var \Drupal\views\Plugin\views\display\DisplayPluginBase $class */
    $class = $route->getOption('_view_display_plugin_class');
    if ($route->getOption('returns_response')) {
      /** @var \Drupal\views\Plugin\views\display\ResponseDisplayPluginInterface $class */
      return $class::buildResponse($view_id, $display_id, $args);
    }
    else {
      $build = $class::buildBasicRenderable($view_id, $display_id, $args, $route);
      Page::setPageRenderArray($build);
      views_add_contextual_links($build, 'page', $display_id, $build);
      return $build;
    }
  }
}