routeMatch = $route_match; } /** * {@inheritdoc} */ public function getRuntimeContexts(array $unqualified_context_ids) { $result = []; $context_definition = EntityContextDefinition::create('node')->setRequired(FALSE); $value = NULL; if (($route_object = $this->routeMatch->getRouteObject())) { $route_contexts = $route_object->getOption('parameters'); // Check for a node revision parameter first. if (isset($route_contexts['node_revision']) && $revision = $this->routeMatch->getParameter('node_revision')) { $value = $revision; } elseif (isset($route_contexts['node']) && $node = $this->routeMatch->getParameter('node')) { $value = $node; } elseif (isset($route_contexts['node_preview']) && $node = $this->routeMatch->getParameter('node_preview')) { $value = $node; } elseif ($this->routeMatch->getRouteName() == 'node.add') { $node_type = $this->routeMatch->getParameter('node_type'); $value = Node::create(['type' => $node_type->id()]); } } $cacheability = new CacheableMetadata(); $cacheability->setCacheContexts(['route']); $context = new Context($context_definition, $value); $context->addCacheableDependency($cacheability); $result['node'] = $context; return $result; } /** * {@inheritdoc} */ public function getAvailableContexts() { $context = EntityContext::fromEntityTypeId('node', $this->t('Node from URL')); return ['node' => $context]; } }