Chris@0: configFactory = $config_factory; Chris@0: $this->adminContext = $admin_context; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function convert($value, $definition, $name, array $defaults) { Chris@0: $entity_type_id = $this->getEntityTypeFromDefaults($definition, $name, $defaults); Chris@0: Chris@0: // If the entity type is dynamic, confirm it to be a config entity. Static Chris@0: // entity types will have performed this check in self::applies(). Chris@0: if (strpos($definition['type'], 'entity:{') === 0) { Chris@18: $entity_type = $this->entityTypeManager->getDefinition($entity_type_id); Chris@0: if (!$entity_type->entityClassImplements(ConfigEntityInterface::class)) { Chris@0: return parent::convert($value, $definition, $name, $defaults); Chris@0: } Chris@0: } Chris@0: Chris@18: if ($storage = $this->entityTypeManager->getStorage($entity_type_id)) { Chris@0: // Make sure no overrides are loaded. Chris@0: return $storage->loadOverrideFree($value); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function applies($definition, $name, Route $route) { Chris@0: if (isset($definition['with_config_overrides']) && $definition['with_config_overrides']) { Chris@0: return FALSE; Chris@0: } Chris@0: Chris@0: if (parent::applies($definition, $name, $route)) { Chris@0: $entity_type_id = substr($definition['type'], strlen('entity:')); Chris@0: // If the entity type is dynamic, defer checking to self::convert(). Chris@0: if (strpos($entity_type_id, '{') === 0) { Chris@0: return TRUE; Chris@0: } Chris@0: // As we only want to override EntityConverter for ConfigEntities, find Chris@0: // out whether the current entity is a ConfigEntity. Chris@18: $entity_type = $this->entityTypeManager->getDefinition($entity_type_id); Chris@0: if ($entity_type->entityClassImplements(ConfigEntityInterface::class)) { Chris@0: return $this->adminContext->isAdminRoute($route); Chris@0: } Chris@0: } Chris@0: return FALSE; Chris@0: } Chris@0: Chris@0: }