Alias.php in GraphQL 8.3
File
modules/graphql_core/src/Plugin/GraphQL/Fields/Routing/InternalUrl/Alias.php
View source
<?php
namespace Drupal\graphql_core\Plugin\GraphQL\Fields\Routing\InternalUrl;
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\path_alias\AliasManagerInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Url;
use Drupal\graphql\GraphQL\Execution\ResolveContext;
use Drupal\graphql\Plugin\GraphQL\Fields\FieldPluginBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use GraphQL\Type\Definition\ResolveInfo;
class Alias extends FieldPluginBase implements ContainerFactoryPluginInterface {
use DependencySerializationTrait;
protected $aliasManager;
public static function create(ContainerInterface $container, array $configuration, $pluginId, $pluginDefinition) {
return new static($configuration, $pluginId, $pluginDefinition, $container
->get('path_alias.manager'));
}
public function __construct(array $configuration, $pluginId, $pluginDefinition, AliasManagerInterface $aliasManager) {
parent::__construct($configuration, $pluginId, $pluginDefinition);
$this->aliasManager = $aliasManager;
}
public function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
if ($value instanceof Url) {
$internal = "/{$value->getInternalPath()}";
$alias = $this->aliasManager
->getAliasByPath($internal);
if ($internal !== $alias) {
(yield $alias);
}
}
}
}
Classes
Name |
Description |
Alias |
Plugin annotation
@GraphQLField(
id = "internal_url_path_alias",
secure = true,
name = "pathAlias",
description = @Translation("The url's path alias if any."),
response_cache_contexts = {"languages:language_url"},
type = "String",
… |