You are here

protected function Breadcrumbs::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/Breadcrumbs/Breadcrumbs.php, line 97

Class

Breadcrumbs
Retrieve the breadcrumbs.

Namespace

Drupal\graphql_core\Plugin\GraphQL\Fields\Breadcrumbs

Code

protected function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
  if ($value instanceof Url) {
    $resolve = $this->subRequestBuffer
      ->add($value, function () {
      $links = $this->breadcrumbManager
        ->build($this->routeMatch)
        ->getLinks();
      return $links;
    });
    return function ($value, array $args, ResolveContext $context, ResolveInfo $info) use ($resolve) {

      /** @var \Drupal\graphql\GraphQL\Cache\CacheableValue $response */
      $response = $resolve();
      $links = $response
        ->getValue();
      foreach ($links as $link) {
        (yield new CacheableValue($link, [
          $response,
        ]));
      }
    };
  }
}