improvements-2.x-dev/src/ImprovementsEventSubscriber.php
src/ImprovementsEventSubscriber.php
<?php namespace Drupal\improvements; use Drupal\Core\Routing\RouteObjectInterface; use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\Event\ViewEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * Event Subscriber MyEventSubscriber. */ class ImprovementsEventSubscriber implements EventSubscriberInterface { /** * {@inheritdoc} */ public static function getSubscribedEvents(): array { $events[KernelEvents::VIEW][] = ['onKernelView', 10]; $events[KernelEvents::RESPONSE][] = ['onKernelResponse', 10]; return $events; } /** * KernelEvents::VIEW event callback. */ public function onKernelView(ViewEvent $event): void { // Create hook_page_ROUTE_NAME_result_alter() $result = $event->getControllerResult(); $current_route_name = \Drupal::routeMatch()->getRouteName(); \Drupal::moduleHandler()->alter('page_' . str_replace('.', '_', $current_route_name) . '_result', $result); $event->setControllerResult($result); } /** * KernelEvents::RESPONSE event callback. */ public function onKernelResponse(ResponseEvent $event): void { // Clear page cache on clear render cache $request = $event->getRequest(); $route_name = $request->attributes->get(RouteObjectInterface::ROUTE_NAME); if ($route_name == 'admin_toolbar_tools.flush_rendercache') { $database = \Drupal::database(); if ($database->schema()->tableExists('cache_page')) { $database->truncate('cache_page')->execute(); } } } }