src/EventListener/PageEventListener.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Event\PageEvent;
  4. use Symfony\Component\Filesystem\Filesystem;
  5. use Symfony\Component\HttpKernel\KernelInterface;
  6. use Symfony\Component\Routing\RouterInterface;
  7. class PageEventListener
  8. {
  9.     public const PAGE_CACHE_DIRTY 'page_cache_dirty';
  10.     public const PAGE_CACHE_DIRTY_MODAL 'page_cache_dirty_modal';
  11.     private RouterInterface $router;
  12.     private Filesystem $filesystem;
  13.     private KernelInterface $kernel;
  14.     public function __construct(
  15.         RouterInterface $router,
  16.         Filesystem $filesystem,
  17.         KernelInterface $kernel
  18.     ) {
  19.         $this->router $router;
  20.         $this->filesystem $filesystem;
  21.         $this->kernel $kernel;
  22.     }
  23.     public function onPostPersist(PageEvent $pageEvent)
  24.     {
  25.         $cacheDir $this->kernel->getCacheDir();
  26.         $cacheFiles = [];
  27.         foreach (['url_generating_routes''url_matching_routes'] as $className) {
  28.             $cacheFiles[] = sprintf('%s%s%s.php'$cacheDir\DIRECTORY_SEPARATOR$className);
  29.         }
  30.         $this->filesystem->remove($cacheFiles);
  31.         $this->router->warmUp($cacheDir);
  32.     }
  33. }