You are here

public function MenuLinks::resolveValues in GraphQL 8.3

Retrieve the list of field values.

Always returns a list of field values. Even for single value fields. Single/multi field handling is responsibility of the base class.

Parameters

mixed $value: The current object value.

array $args: Field arguments.

$context: The resolve context.

\GraphQL\Type\Definition\ResolveInfo $info: The resolve info object.

Return value

\Generator The value generator.

Overrides FieldPluginBase::resolveValues

File

modules/graphql_core/src/Plugin/GraphQL/Fields/Menu/MenuLinks.php, line 66

Class

MenuLinks
Retrieves a menus links.

Namespace

Drupal\graphql_core\Plugin\GraphQL\Fields\Menu

Code

public function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
  if ($value instanceof MenuInterface) {
    $tree = $this->menuLinkTree
      ->load($value
      ->id(), new MenuTreeParameters());
    $manipulators = [
      [
        'callable' => 'menu.default_tree_manipulators:checkAccess',
      ],
      [
        'callable' => 'menu.default_tree_manipulators:generateIndexAndSort',
      ],
    ];
    foreach (array_filter($this->menuLinkTree
      ->transform($tree, $manipulators), function (MenuLinkTreeElement $item) {
      return $item->link instanceof MenuLinkInterface && $item->link
        ->isEnabled() && (empty($item->access) || $item->access
        ->isAllowed());
    }) as $branch) {
      (yield $branch);
    }
  }
}