public function ThunderMenuSchemaExtension::registerResolvers in Thunder 6.2.x
Overrides ThunderSchemaExtensionPluginBase::registerResolvers
File
- modules/
thunder_gqls/ src/ Plugin/ GraphQL/ SchemaExtension/ ThunderMenuSchemaExtension.php, line 22
Class
- ThunderMenuSchemaExtension
- The menu schema extension.
Namespace
Drupal\thunder_gqls\Plugin\GraphQL\SchemaExtensionCode
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))));
// Menu id.
$this
->addFieldResolverIfNotExists('Menu', 'id', $this->builder
->fromPath('entity:menu', 'id'));
// Menu name.
$this
->addFieldResolverIfNotExists('Menu', 'name', $this->builder
->fromPath('entity:menu', 'label'));
// Menu items.
$this
->addFieldResolverIfNotExists('Menu', 'items', $this->builder
->produce('menu_links_active_trail')
->map('menu', $this->builder
->fromParent())
->map('entity', $this->builder
->fromContext('entity')));
// Menu title.
$this
->addFieldResolverIfNotExists('MenuItem', 'title', $this->builder
->produce('menu_link_label')
->map('link', $this->builder
->produce('menu_tree_link')
->map('element', $this->builder
->fromParent())));
// Menu in active trail.
$this
->addFieldResolverIfNotExists('MenuItem', 'inActiveTrail', $this->builder
->produce('menu_tree_in_active_trail')
->map('element', $this->builder
->fromParent()));
// Menu children.
$this
->addFieldResolverIfNotExists('MenuItem', 'children', $this->builder
->produce('menu_tree_subtree')
->map('element', $this->builder
->fromParent()));
// Menu url.
$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())));
}