public function ViewPageController::handle

Handles a response for a view.

File

drupal/core/modules/views/lib/Drupal/views/Routing/ViewPageController.php, line 62
Contains \Drupal\views\Routing\ViewPageController.

Class

ViewPageController
Defines a page controller to execute and render a view.

Namespace

Drupal\views\Routing

Code

public function handle(Request $request) {
  $view_id = $request->attributes
    ->get('view_id');
  $display_id = $request->attributes
    ->get('display_id');
  $entities = $this->storageController
    ->load(array(
    $view_id,
  ));
  $entity = reset($entities);
  if (empty($entity)) {
    throw new NotFoundHttpException(format_string('Page controller for view %id requested, but view was not found.', array(
      '%id' => $view_id,
    )));
  }
  $view = $this->executableFactory
    ->get($entity);
  $view
    ->setDisplay($display_id);
  $view
    ->initHandlers();
  $args = array();
  foreach (array_keys((array) $view->argument) as $argument_id) {
    $arg = $request->attributes
      ->get('arg_' . $argument_id);
    if (isset($arg)) {
      $args[] = $arg;
    }
  }
  return $view
    ->executeDisplay($display_id, $args);
}