/**
  * Handles HTTP validation headers.
  */
 public function onKernelController(FilterControllerEvent $event)
 {
     $request = $event->getRequest();
     if (!($configuration = $request->attributes->get('_cache'))) {
         return;
     }
     $response = new Response();
     $lastModifiedDate = '';
     if ($configuration->getLastModified()) {
         $lastModifiedDate = $this->getExpressionLanguage()->evaluate($configuration->getLastModified(), $request->attributes->all());
         $response->setLastModified($lastModifiedDate);
     }
     $etag = '';
     if ($configuration->getETag()) {
         $etag = hash('sha256', $this->getExpressionLanguage()->evaluate($configuration->getETag(), $request->attributes->all()));
         $response->setETag($etag);
     }
     if ($response->isNotModified($request)) {
         $event->setController(function () use($response) {
             return $response;
         });
         $event->stopPropagation();
     } else {
         if ($etag) {
             $this->etags[$request] = $etag;
         }
         if ($lastModifiedDate) {
             $this->lastModifiedDates[$request] = $lastModifiedDate;
         }
     }
 }
 public function filter(FilterControllerEvent $event, Response $response)
 {
     if ($this->check($response)) {
         $event->setController(function () use($response) {
             return $response;
         });
         $event->stopPropagation();
     }
 }
 /**
  * Searches for sluggable objects in the route parameters and checks slugs if necessary.
  *
  * If an invalid slug is detected, then the user will be redirected to the URLs with the valid slug.
  *
  * @param FilterControllerEvent $event
  */
 public function onKernelController(FilterControllerEvent $event)
 {
     $attributes = $event->getRequest()->attributes;
     foreach ($attributes as $name => $value) {
         if ($this->hasValidSlug($attributes, $name)) {
             continue;
         }
         $event->stopPropagation();
         // Invalid slug passed. Redirect to a URL with valid slug.
         $event->setController(function () use($event, $name) {
             return $this->createRedirectFor($event->getRequest(), $name);
         });
         break;
     }
 }
 /**
  * Handle switching the controller and action to the maintenance state.
  */
 private function handleMaintenanceState()
 {
     $this->event->stopPropagation();
     $this->event->setController([$this->maintenanceController, 'displayMaintenanceAction']);
 }