View source
<?php
namespace Drupal\thunder_gqls\Plugin\GraphQL\SchemaExtension;
use Drupal\graphql\GraphQL\ResolverRegistryInterface;
class ThunderMenuSchemaExtension extends ThunderSchemaExtensionPluginBase {
public function registerResolvers(ResolverRegistryInterface $registry) {
parent::registerResolvers($registry);
$this
->addFieldResolverIfNotExists('Query', 'menu', $this->builder
->compose($this
->fromRoute($this->builder
->fromArgument('path')), $this->builder
->context('entity', $this->builder
->fromParent()), $this->builder
->produce('entity_load')
->map('type', $this->builder
->fromValue('menu'))
->map('id', $this->builder
->fromArgument('id'))
->map('access', $this->builder
->fromValue(FALSE))));
$this
->addFieldResolverIfNotExists('Menu', 'id', $this->builder
->fromPath('entity:menu', 'id'));
$this
->addFieldResolverIfNotExists('Menu', 'name', $this->builder
->fromPath('entity:menu', 'label'));
$this
->addFieldResolverIfNotExists('Menu', 'items', $this->builder
->produce('menu_links_active_trail')
->map('menu', $this->builder
->fromParent())
->map('entity', $this->builder
->fromContext('entity')));
$this
->addFieldResolverIfNotExists('MenuItem', 'title', $this->builder
->produce('menu_link_label')
->map('link', $this->builder
->produce('menu_tree_link')
->map('element', $this->builder
->fromParent())));
$this
->addFieldResolverIfNotExists('MenuItem', 'inActiveTrail', $this->builder
->produce('menu_tree_in_active_trail')
->map('element', $this->builder
->fromParent()));
$this
->addFieldResolverIfNotExists('MenuItem', 'children', $this->builder
->produce('menu_tree_subtree')
->map('element', $this->builder
->fromParent()));
$this
->addFieldResolverIfNotExists('MenuItem', 'url', $this->builder
->compose($this->builder
->produce('menu_link_url')
->map('link', $this->builder
->produce('menu_tree_link')
->map('element', $this->builder
->fromParent())), $this->builder
->produce('url_path')
->map('url', $this->builder
->fromParent())));
}
}