You are here

protected function LinkAttribute::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/Entity/Fields/Link/LinkAttribute.php, line 31

Class

LinkAttribute
Retrieve specific attributes of a menu link.

Namespace

Drupal\graphql_core\Plugin\GraphQL\Fields\Entity\Fields\Link

Code

protected function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
  if ($value instanceof LinkItemInterface) {
    $options = $value
      ->getUrl()
      ->getOptions();

    // Certain attributes like class can be arrays. Check for that and implode them.
    $attributeValue = NestedArray::getValue($options, [
      'attributes',
      $args['key'],
    ]);
    if (is_array($attributeValue)) {
      (yield implode(' ', $attributeValue));
    }
    else {
      (yield $attributeValue);
    }
  }
}