/** * 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']); }