diff core/lib/Drupal/Core/EventSubscriber/CacheRouterRebuildSubscriber.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/lib/Drupal/Core/EventSubscriber/CacheRouterRebuildSubscriber.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,33 @@
+<?php
+
+namespace Drupal\Core\EventSubscriber;
+
+use Drupal\Core\Cache\Cache;
+use Drupal\Core\Routing\RoutingEvents;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Clear cache tags when the router is rebuilt.
+ */
+class CacheRouterRebuildSubscriber implements EventSubscriberInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function onRouterFinished() {
+    // Requested URLs that formerly gave a 403/404 may now be valid.
+    // Also invalidate all cached routing as well as every HTTP response.
+    Cache::invalidateTags(['4xx-response', 'route_match', 'http_response']);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    $events = [];
+    // Act only when the router rebuild is finished.
+    $events[RoutingEvents::FINISHED][] = ['onRouterFinished', 200];
+    return $events;
+  }
+
+}