routeMatch = $route_match; } /** * {@inheritdoc} */ public function getRuntimeContexts(array $unqualified_context_ids) { $context_definition = new ContextDefinition('entity:file', NULL, FALSE); $value = NULL; // Hack the file out of the route. $route_object = $this->routeMatch->getRouteObject(); if ($route_object) { $route_contexts = $route_object->getOption('parameters'); if ($route_contexts && isset($route_contexts['file'])) { $file = $this->routeMatch->getParameter('file'); if ($file) { $value = $file; } } } $cacheability = new CacheableMetadata(); $cacheability->setCacheContexts(['route']); $context = new Context($context_definition, $value); $context->addCacheableDependency($cacheability); return ['file' => $context]; } /** * {@inheritdoc} */ public function getAvailableContexts() { $context = new Context(new ContextDefinition('entity:file', $this->t('File from URL'))); return ['file' => $context]; } }