diff --git a/core/core.services.yml b/core/core.services.yml index ce268ae..730b983 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -382,7 +382,17 @@ services: class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware arguments: ['@settings'] tags: - - { name: http_middleware } + - { name: http_middleware, priority: 30 } + http_middleware.page_cache: + class: Drupal\Core\StackMiddleware\PageCache + arguments: ['@kernel'] + tags: + - { name: http_middleware, priority: 20 } + http_middleware.kernel_pre_handle: + class: Drupal\Core\StackMiddleware\KernelPreHandle + arguments: ['@kernel'] + tags: + - { name: http_middleware, priority: 10 } language_manager: class: Drupal\Core\Language\LanguageManager arguments: ['@language.default'] diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index da657c5..e950ff1 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -410,12 +410,9 @@ public function getContainer() { } /** - * Helper method that does request related initialization. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * The current request. + * {@inheritdoc} */ - protected function preHandle(Request $request) { + public function preHandle(Request $request) { // Load all enabled modules. $this->container->get('module_handler')->loadAll(); @@ -560,7 +557,6 @@ public function terminate(Request $request, Response $response) { */ public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) { $this->boot(); - $this->preHandle($request); return $this->getHttpKernel()->handle($request, $type, $catch); } diff --git a/core/lib/Drupal/Core/DrupalKernelInterface.php b/core/lib/Drupal/Core/DrupalKernelInterface.php index 08d007c..ca7af2b 100644 --- a/core/lib/Drupal/Core/DrupalKernelInterface.php +++ b/core/lib/Drupal/Core/DrupalKernelInterface.php @@ -108,4 +108,12 @@ public function handlePageCache(Request $request); */ public function prepareLegacyRequest(Request $request); + /** + * Helper method that does request related initialization. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * The current request. + */ + public function preHandle(Request $request); + } diff --git a/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php b/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php new file mode 100644 index 0000000..1ccdea1 --- /dev/null +++ b/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php @@ -0,0 +1,57 @@ +httpKernel = $http_kernel; + $this->drupalKernel = $drupal_kernel; + } + + /** + * {@inheritdoc} + */ + public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) { + $this->drupalKernel->preHandle($request); + + return $this->httpKernel->handle($request, $type, $catch); + } + +} + diff --git a/core/lib/Drupal/Core/StackMiddleware/PageCache.php b/core/lib/Drupal/Core/StackMiddleware/PageCache.php new file mode 100644 index 0000000..ba59e93 --- /dev/null +++ b/core/lib/Drupal/Core/StackMiddleware/PageCache.php @@ -0,0 +1,55 @@ +httpKernel = $http_kernel; + $this->drupalKernel = $drupal_kernel; + } + + /** + * {@inheritdoc} + */ + public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) { + $this->drupalKernel->handlePageCache($request); + + return $this->httpKernel->handle($request, $type, $catch); + } + +} diff --git a/index.php b/index.php index 78ee18c..406d3dc 100644 --- a/index.php +++ b/index.php @@ -19,8 +19,7 @@ $request = Request::createFromGlobals(); $kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod'); $response = $kernel - ->handlePageCache($request) - ->handle($request) + ->handle($request) // Handle the response object. ->prepare($request)->send(); $kernel->terminate($request, $response);