public function HtmlPageController::content

Controller method for generic HTML pages.

Parameters

Request $request: The request object.

callable $_content: The body content callable that contains the body region of this page.

Return value

\Symfony\Component\HttpFoundation\Response A response object.

File

drupal/core/lib/Drupal/Core/HtmlPageController.php, line 48
Definition of Drupal\Core\HtmlPageController.

Class

HtmlPageController
Default controller for most HTML pages.

Namespace

Drupal\Core

Code

public function content(Request $request, $_content) {

  // @todo When we have a Generator, we can replace the forward() call with
  // a render() call, which would handle ESI and hInclude as well.  That will
  // require an _internal route.  For examples, see:
  // https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing/internal.xml
  // https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Controller/InternalController.php
  $attributes = clone $request->attributes;
  $controller = $_content;

  // We need to clean off the derived information and such so that the
  // subrequest can be processed properly without leaking data through.
  $attributes
    ->remove('system_path');
  $attributes
    ->remove('_content');
  $response = $this->container
    ->get('http_kernel')
    ->forward($controller, $attributes
    ->all(), $request->query
    ->all());

  // For successful (HTTP status 200) responses, decorate with blocks.
  if ($response
    ->isOk()) {
    $page_content = $response
      ->getContent();
    $response = new Response(drupal_render_page($page_content));
  }
  return $response;
}